ubuntu 13.04 не загружается с Gigabyte GT440

Случай 1: вы знаете точное имя файла для поиска

Используйте find с test -e your_file, чтобы проверить, существует ли файл. Например, вы ищете каталоги, у которых нет в них cover.jpg:

find base_dir -mindepth 2 -maxdepth 2 -type d '!' -exec test -e "{}/cover.jpg" ';' -print

Однако это чувствительно к регистру.

Случай 2: вы хотите быть более гибким [!d3 ]

Вы не уверены в этом случае, а расширение может быть jPg, png ...

find base_dir -mindepth 2 -maxdepth 2 -type d '!' -exec sh -c 'ls -1 "{}"|egrep -i -q "^cover\.(jpg|png)$"' ';' -print

Объяснение:

Вам нужно создайте оболочку sh для каждого каталога, так как соединение с каналами невозможно при использовании выходов find ls -1 "{}", только имена файлов каталога find в настоящее время перемещаются egrep (вместо grep) используют расширенные регулярные выражения ; -i делает регистр поиска нечувствительным, -q заставляет его опускать любой выход "^cover\.(jpg|png)$" - это шаблон поиска. В этом примере оно соответствует, например, cOver.png, Cover.JPG или cover.png. [F20] должен быть экранирован, иначе это означает, что он соответствует любому символу. ^ обозначает начало строки, $ его конец

Другие примеры шаблонов поиска для egrep:

Подставьте часть egrep -i -q "^cover\.(jpg|png)$":

] Для каждой директории необходимо создать оболочку sh, поскольку при использовании find egrep -q "^cover\.(jpg|png)$" невозможно выполнить трубку: совпадения cover.png, cover.jpg, но NOT Cover.jpg ( чувствительность к регистру не отключена). ls -1 "{}" выводит только имена файлов каталога find в настоящее время перемещаются

Для получения дополнительной информации об этом, проверьте Регулярные выражения.

1
задан 3 October 2013 в 21:22

0 ответов

Другие вопросы по тегам:

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