Команда поиска Unix, игнорирующая отсутствующий файл или каталог - PullRequest
0 голосов
/ 12 мая 2018

У меня есть маленькая команда, которая удаляет все файлы в каталогах ~/Library/Cache, ~/Library/Logs, /Library/Cache и /Library/Logs, но иногда один или несколько каталогов отсутствуют, а команда rm -rf не выполняется.

sudo find ~/Library/Caches ~/Library/Logs /Library/Caches /Library/Logs -mindepth 1 -type f -exec rm -rf {}+

Я хотел, чтобы команда игнорировала отсутствующие каталоги и просто выполняла команду для найденных файлов.

1 Ответ

0 голосов
/ 12 мая 2018

Единственная проблема здесь в том, что вы раздражены, увидев сообщение об ошибке в отсутствующих каталогах.

Вы можете перенаправить стандартный поток ошибок на /dev/null, чтобы игнорировать ошибки:

sudo find ~/Library/Caches ~/Library/Logs \
           /Library/Caches  /Library/Logs \
           -mindepth 1 -type f -exec rm -rf {} + 2>/dev/null

Также обратите внимание, что -mindepth 1 здесь не нужен, и что некоторые реализации find имеют -delete:

sudo find ~/Library/Caches ~/Library/Logs \
           /Library/Caches  /Library/Logs \
           -type f -delete 2>/dev/null

Или с оболочкой, которая понимает расширения скобок:

sudo find {~,}/Library/{Logs,Caches} -type f -delete 2>/dev/null
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...