Например, надо рекурсивно в домашнем каталоге найти все файлы 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. |