Unix вызывает сценарий, когда файл перемещен

Мне вывели тонны файлов в несколько различных папок. Я попытался организовать их несколько раз, unfortunatly, нет никакой организационной структуры, которая последовательно имеет смысл для всех них.

Я наконец решил записать мне приложение, с которым я могу добавить теги на файлы, затем организация может быть пользовательской к фактической организационной структуре.

Я хочу препятствовать получить осиротевшие данные. Если я перемещаюсь/переименовываю файл, мое приложение тега должно быть сказано об этом так, это может обновить имя в базе данных. Я не хочу это отмечающий файлы, которые больше не существуют, и имеющий необходимость повторно добавить теги для файлов, которые раньше существовали.

Существует ли способ, которым я могу записать обратный вызов, который сцепится в команду mv так, чтобы, если я переименовываю или перемещаю свои файлы, они вызвали сценарий, который уведомит мое приложение, которое может обновить его базу данных?

Мое приложение записано в Ruby, но я готов играть с C при необходимости.

1
задан Costique 5 May 2012 в 07:53
поделиться

2 ответа

Если вы используете Linux, вы можете использовать inotify ( справочная страница ) для отслеживания каталогов на предмет событий файлов. Похоже, есть рубиновый интерфейс для inotify .

Из Википедии:

Some of the events that can be monitored for are:
IN_ACCESS - read of the file
IN_MODIFY - last modification
IN_ATTRIB - attributes of file change
IN_OPEN and IN_CLOSE - open or close of file
IN_MOVED_FROM and IN_MOVED_TO - when the file is moved or renamed
IN_DELETE - a file/directory deleted
IN_CREATE - a file in a watched directory is created
IN_DELETE_SELF - file monitored is deleted

Это не работает для Windows (и, я думаю, также не для других Unix, кроме Linux), поскольку inotify там не существует.

2
ответ дан 2 September 2019 в 23:29
поделиться

Можете ли вы контролировать путь ваших пользователей? Поместите сценарий или exe и укажите путь к нему перед стандартной командой mv. Пусть этот сценарий сделает то, что вам нужно, а затем вызовет стандартный mv для выполнения перемещения.

Альтернативно псевдоним в каждом профиле пользователя. Пусть псевдоним вызовет вашу заменяющую команду mv.

Или переименуйте существующую команду mv и поместите замену в тот же каталог, назовите ее mv и пусть она вызовет вашу недавно переименованную команду mv после выполнения того, что вы хотите.

0
ответ дан 2 September 2019 в 23:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: