Использование mtime, отличное от FIND - PullRequest
0 голосов
/ 08 августа 2011

Я пытаюсь написать скрипт, который будет перемещать файлы старше 1 дня в каталог архива.Я использовал следующую команду find:

for filename in `find /file_path/*.* -type f -mtime +1`

Это не удалось, поскольку мой список аргументов слишком велик для обработки find.Я получил следующую ошибку:

/usr/bin/find: arg list too long

Можно ли использовать find в операторе IF-ELSE?Может ли кто-нибудь привести некоторые примеры использования mtime, отличного от find.

Редактировать: добавить цикл for, частью которого является находка.

Ответы [ 3 ]

2 голосов
/ 08 августа 2011

Почему бы просто не использовать часть -exec команды find?

2 голосов
/ 08 августа 2011
find /file_path -name '*.*' -mtime +1 -type f |
while read filename
do ...move operation...
done

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

1 голос
/ 10 января 2013

Если вы просто хотите скопировать файлы, вы можете использовать

find / file_path -name ". " -mtime +1 -type f | xargs -i mv {} / usr / local / archive

...