Аргу слишком длинная ошибка при использовании find

У меня есть команда find следующим образом:

 find /jobs/logs/* -prune -name '*.log' -type f -mtime +1 | while read LOGFILE do echo $LOGFILE done 

Это происходит из-за ошибки:

 /usr/bin/find: arg list too long 

Может кто-нибудь предложить способ исправить это?

(Это продолжение моего предыдущего вопроса .)

Попробуйте изменить команду find чтобы:

 find /jobs/logs/. ! -name . -prune -name *.log -type f -mtime +1 

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

Взгляните на эту страницу для получения дополнительной информации: Ограничьте поиск в текущем каталоге портативно

Пусть find путь к каталогу, это его работа! Основываясь на моем предыдущем ответе :

 find /jobs/logs/. -name . -o -type d -prune -o -type f -mtime +1 -exec sh -c 'echo "$0"' {} \; 

Кстати, обратите внимание, что я использовал -exec чтобы заставить find вызывать команду – вот для чего это.

Также обратите внимание, что read LOGFILE не считывает строку ввода: она разделяет ведущие пробелы и интерпретирует обратную косую черту. Надежным способом чтения строки является IFS= read -r LOGFILE .