У меня есть однострочный скрипт, который работает нормально, но ...

find $HOME/html/mydir/downloads/sec/*.zip  -mtime 2 -exec rm {} \;

Он генерирует ошибку, если не найдено ни одного файла, и мой веб-хост отправляет мне бессмысленное письмо. Поэтому я хочу подавить сообщение об ошибке, если "ошибка" - "Нет такого файла или каталога"

Я думал, что мог бы сделать что-то вроде этого:

find $HOME/html/mydir/downloads/sec/*.zip 2>&1 | grep -v "No such file or directory" 

... но я не знаю, как объединить это с моим текущим сценарием так, чтобы вывод find все равно шел в exec, если найдены файлы (или есть другой тип ошибки).

1 ответ1

3

Пытаться:

find $HOME/html/mydir/downloads/sec/ -maxdepth 1 -name '*.zip' -mtime 2 -delete

find не имеет проблемы, если поиск происходит, не находит файлов. У него есть проблема, если каталог / файлы, указанные вами в командной строке, не существуют. Решение, как показано выше, состоит в том, чтобы указать каталог, который существует, и попросить его выполнить поиск файлов .zip .

Также обратите внимание, что -exec rm {} \; можно заменить на -delete .

Кстати, -mtime 2 будет верно только для файлов, которые (округлены до целого числа) 2 дня. Если вы хотите удалить файлы, которые больше , чем за два дня летних, а затем использовать -mtime +2

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .