Как найти папки Mac, которые пропускают определенный файл

Существует ли способ проверить папки на Вашем Mac для недостающего объекта?

Скажите, что я хочу просканировать свой внешний жесткий диск и найти все папки с определенным словом в заголовке, которые пропускают файл Data.log?

Каков был бы самый легкий способ пойти о выполнении этого, или это даже возможно?

0
задан 11.10.2014, 00:07

2 ответа

Используя большой ответ от @Nifle, но включая Вашу попытку специфических особенностей:

% find /Volumes/WD -type d -name *[TEST]* | while read a; do if [ ! -f $a/Data.log ]; then echo $a; fi; done  

Разрушение этой остроты:

  • find /Volumes/WD -type d -name *[TEST]*: Обходит дерево файла от /Volumes/WD в Ваш внешний поиск HD каталогов (-type d) которые имеют [TEST] где-нибудь на их имя (-name *[TEST]*).

  • Вывод от find команда передается по каналу ( |) в bash while цикл, который вытаскивает соответствие каталогам, по одному хранящим их в переменной a.

  • В цикле:

    • if оператор проверяет что файл Data.log не находится в каталоге, который рассматривают. В if оператор, $a расширен так, чтобы $a/Data.log путь как /Volumes/WD/<dir1>/<dir2>/Data.log. Для получения теста, Вы интересуетесь ! и -f используются так, чтобы только случаи, где файл с тем именем не существует, оценили к TRUE (! NOT, и -f указывает на файл, а не любой другой тип записи файловой системы как каталоги или ссылки).
    • Наконец, если мы находим каталог соответствия, он печатается echo $a где $a заменяется как выше именем каталога, переданным по каналу в от find.

Я знаю, что перехеширую предыдущий ответ, но я надеюсь, что это разрешает то, что продолжается в большой остроте, выдвинутой @Nifle, и решило Вашу проблему.

3
ответ дан 24.11.2019, 03:38

Это должно добиться цели, выполнить его в оболочке.

find /Volumes/WD/ -type d -name '*TEST*' | while read a; do if [ ! -f $a/Data.log ]; then echo $a; fi; done;
1
ответ дан 24.11.2019, 03:38

Теги

Похожие вопросы