Администрирование FreeBSD, Linux, ... find: как исключить директорию из поиска? Mon, July 15 2024  

Поделиться

Нашли опечатку?

Пожалуйста, сообщите об этом - просто выделите ошибочное слово или фразу и нажмите Shift Enter.

find: как исключить директорию из поиска? Печать
Добавил(а) microsin   

Например, надо рекурсивно в домашнем каталоге найти все файлы nano.specs, не просматривая при этом папку ~/tmp и её подкаталоги. С помощью find это можно проделать следующей командой:

$ find ~ -path ~/tmp -prune -o -name "nano.specs" -print

Назначение используемых здесь опций:

~ Искать в домашнем каталоге (путь ~), рекурсивно, т. е. просматривая все подкаталоги домашней директории.
-path ~/tmp -prune Исключить из поиска папку ~/tmp, т. е. не просматривать при поиске папку ~/tmp и все её подкаталоги.
-o Означает оператор OR (т. е. ИЛИ), см. EXPRESSION -> Operators [2].
-name "nano.specs" Искать файл nano.specs.
-print Печатать полное имя файла в стандартный вывод, за которым следует символ новой строки.

[Исключение нескольких директорий из поиска]

Вот так можно указать несколько каталогов исключения для find (здесь с помощью оператора -o исключаются из поиска каталоги ~/tmp, ~/install и ~/Bouffalo):

find ~ -type d \( -path ~/tmp -o -path ~/install -o -path ~/Bouffalo \) -prune -o -name 'nano.specs' -print

Другой пример, который делает то же самое:

find ~ -not \( -path ~/tmp -prune \) -not \( -path ~/install -prune \) -not \( -path ~/Bouffalo -prune \) -name nano.specs

[Ссылки]

1. How do I exclude a directory when using `find`? site:stackoverflow.com.
2. find: что означает аргумент -o в командной строке?
3. Exclude directories in locate search site:stackexchange.com.

 

Добавить комментарий


Защитный код
Обновить

Top of Page