Обычно вы делаете это программно во время создания или перемещения файла, но можно запускать сценарий всякий раз, когда файл создается или перемещается в папку с помощью incron
. Настройте свой файл вкладок, используя incrontab -e
следующую строку, но, конечно, с вашими путями:
/path/to/dir0 IN_MOVED_TO,IN_CREATE /path/to/script $@/$#
Затем /path/to/script
напишите быстрое действие переименования. Имейте в виду, что сценарий также будет вызываться для нового файла, который вы создаете, поэтому он должен проверить, было ли имя файла соответствующим образом уже названо или нет. В этом примере он проверяет, имеет ли файл десятизначное число секунд с начала эпохи в качестве последней части имени файла, и если нет, добавляет его:
#!/bin/bash
echo $1 | grep -qx '.*_[0-9]\{10\}' || mv "$1" "$1_$(date +%s)"
Изменить: Когда я впервые написал это, у меня было мало времени, и я не мог понять, как заставить bash
сделать сопоставление с образцом здесь. Жиль указал, как это сделать, не вызывая grep, используя ERE match в bash:
#!/bin/bash
[[ ! ( $1 =~ _[0-9]{10}$ ) ]] && mv "$1" "$1_$(date +%s)"