Можно ли автоматически переименовать файл, когда он помещен в определенный каталог?
Например, у меня есть каталог с именем «dir0». Я перемещаю или копирую файл с именем «file1» в «dir0». Затем «file1» следует переименовать в «file1_ {current timestamp}»
linux
filesystems
Nick.h
источник
источник
Ответы:
Обычно вы делаете это программно во время создания или перемещения файла, но можно запускать сценарий всякий раз, когда файл создается или перемещается в папку с помощью
incron
. Настройте свой файл вкладок, используяincrontab -e
следующую строку, но, конечно, с вашими путями:Затем
/path/to/script
напишите быстрое действие переименования. Имейте в виду, что сценарий также будет вызываться для нового файла, который вы создаете, поэтому он должен проверить, было ли имя файла соответствующим образом уже названо или нет. В этом примере он проверяет, имеет ли файл десятизначное число секунд с начала эпохи в качестве последней части имени файла, и если нет, добавляет его:Изменить: Когда я впервые написал это, у меня было мало времени, и я не мог понять, как заставить
bash
сделать сопоставление с образцом здесь. Жиль указал, как это сделать, не вызывая grep, используя ERE match в bash:источник
Я думаю, что
inotify
это инструмент, который может быть использован в этом случае. В Debian есть инструментinoticoming
для выполнения действий по созданию файла:{}
будет заменено на имя файла.Команда, которую я предоставил, не завершена - она вызывает цикл, потому что, когда файл будет переименован, он будет распознан как новый, поэтому он получит
mv
Ed AGAIN и так далее. Чтобы избежать этого, вы можете использовать--suffix
опцию, если вы знаете, какой суффикс будет в файле перед переименованием.источник
inoticoming
. Из любопытства, когда было бы лучше использовать это сноваinocron
?inoticoming
которое "похоже наincrond
, но имеет меньший вес и не запускается как демон по умолчанию", поэтому я думаю, что это просто еще одно решение с немного другим подходом. .. Я думаю, чтоincron
это более популярно - у меня нет проблем с поискомinoticoming
домашней страницы пакета для него вне Debian ...inoticoming
только в дистрибутивах на основе Debian (в моем Gentoo нет ebuild для него). На странице, которую я разместил, есть два пакета:reprepro
и под нимinoticoming
...Вы можете просто взять такой скрипт и запустить его ... Я оставлю читателю в качестве упражнения добавление дополнительных битов, чтобы он запускался как сервис, и предотвращал одновременное выполнение нескольких копий.
И вот оно работает:
источник
perl
можно делать все что угодно, но постоянный сценарий, который запускается по циклу X-секунда while-true, определенно является хаком, когда вы можете получать уведомления о событиях о записи файлов и мгновенно отвечать, не тратя ресурсы остальное время.