Как исключить каталог по имени, используя find?

У меня много каталогов в моей системе со структурой, выглядящей так:

\-----data
       \------- 001abc
       \------- 002abc
       \------- 003abc
       \------- 004abc
       \------- 005abc
       \ ....

Когда я хочу найти определенный каталог, просто введите find . -iname "002abc*", но как я могу найти каталог, исключая определенные совпадения имен?

Что-то вроде этого в MySQL select * from folder where filename != '0021bc'

1
задан 15 January 2013 в 20:43

2 ответа

[F1]
2
ответ дан 25 May 2018 в 02:25

Вы можете найти «все» папки, а затем выбрать ту, которую вы не хотите, с помощью grep -v (или, например, для этого)

find . -iname "abc*" | grep -v 002

Если вы хотите выбрать больше, чем одно имя, вы можете использовать последовательный grep -v или один оператор egrep.

find . -iname "abc*" | grep -v 002 | grep -v 003

или

find . -iname "abc*" | egrep -v "002|003"

Вам придется настроить его на то, что вы хотите, и я Я счастлив повторить. Если вы читаете справочную страницу для поиска, вы найдете много флагов для сортировки файлов и папок тоже.

1
ответ дан 25 May 2018 в 02:25

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

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