Для этого вам потребуется сценарий, поэтому вы не можете сделать это напрямую с опцией -exec
(если вы не используете bash -c
, что затрудняет цитирование и расширение параметров).
Есть два варианта:
- Используйте
find /src/backup/ | while read -r f; do ...; done
- это будет работать, если у вас есть нормальные имена файлов (без начальных / конечных пробелов или встроенных новых строк).
- Вызовите файл сценария с нужными вам командами, например,
find /src/backup/ -mmin +60 -exec /Path/To/moveunique {} /dest/backup/
- в этом случае я рекомендую указать полный путь к сценарию в Линия crontab
, так как ее окружение отличается от вашей интерактивной оболочки.
Я проиллюстрирую первый вариант: должно быть очевидно, как использовать подобные команды в файле сценария:
find /src/backup/ | while read -r f; do \
mv "$f" /dest/backup/"${f%/*}"/$(date -d@$(stat "$f" -c %Y) +'%Y%m%d-%H%M')-"${f##*/}"; \
done
Он использует stat
для получения времени модификации файла, date
для форматирования нужных вам полей времени и расширения параметра для разделения пути и имени каталога файла.
Это делает довольно длинную командную строку (я использовал строки продолжения, чтобы сделать ее более читабельной, и я не проверял, поддерживает ли crontab
это), поэтому вы предпочитаете использовать скрипт.