Я ищу решение для перемещения файлов, которые старше сегодняшнего дня. Мой раздел журнала заполняется, но я не могу их удалить. Они нужны уже давно. В любом случае одно решение, которое я придумал:
find /sourcedirectory -mtime 365 -exec mv "{}" /destination/directory/ \;
Это сработает? Спрашивая из-за "-mtime 365"переместит ли это файлы, которые старше сегодняшнего дня, в новое место?
Спасибо!
Вы почти правы. -mtime 365
будут все файлы, которым ровно 365 дней. Вам нужны те, которым 365 дней или более, что означает добавление +
перед таким числом -mtime +365
.
Вас также может заинтересовать -maxdepth 1
флаг, который запрещает вам перемещать элементы в подкаталогах.
Если вы хотите быть уверены, что перемещаете только файлы, а не каталоги, добавьте -type f
к строке.
В конце строки добавляем \;
так что find
знает, что это конец выполняемой нами команды.
Итак, строка должна быть такой:
find /sourcedirectory -maxdepth 1 -mtime +365 -type f -exec mv "{}" /destination/directory/ \;
На всякий случай начните с простого выполнения ls -l вместо mv - таким образом вы можете заранее проверить, получаете ли вы именно те файлы, которые хотите, перед повторным запуском с помощью mv, например:
find /sourcedirectory -maxdepth 1 -mtime +365 -type f -exec ls -l {} \;
Будьте осторожны при использовании вышеуказанных решений, я использовал их и в итоге переместил все файлы во все подпапки !!!!
Эта команда перемещает все файлы в каталог / source и все подпапки в исходный каталог:
find /sourcedirectory -mtime +365 -exec mv "{}" /destination/directory/ \;
Вместо этого используйте параметр -maxdepth 1 только для файлов в / sourcedirectory.
find /sourcedirectory -maxdepth 1 -mtime +365 -exec mv "{}" /destination/directory/ \;
Вы можете использовать приведенную ниже команду с atime, если к файлам часто обращаются.
find /sourcedirectory -type f -atime +365 -exec mv -t /destinationdirectory {} +;
Вы можете использовать эту команду и указать, что вы будете искать только файлы, а не каталог, и файл старше одного года
find /sourcedirectory -type f -mtime +365 -exec mv "{}" /destination/directory/ \;
$ find /sourcedirectory/ -maxdepth 1 -mtime +365 -exec mv "{}" /destination/directory/ \;
find: missing argument to `-exec'
Правильным было бы удалить конечную косую черту из /sourcedirectory/
$ find /sourcedirectory -maxdepth 1 -mtime +365 -exec mv "{}" /destination/directory/ \;