Я использую команду find
вместе с аргументом -exec something
. Могу ли я исключить некоторые каталоги / имена, которые соответствуют регулярному выражению (что-то вроде rsync --exclude
)? Хватит ли -prune
, если я хочу исключить многие вещи?
Для рабочего решения (проверено на Ubuntu 12.04).
find ! -path "*dir1*" -iname "*.mp3"
будет искать файлы mp3 в текущей папке и подпапках, кроме подпапки dir1.
find ! -path "*dir1*" ! -path "*dir2*" -iname "*.mp3"
исключить dir1 И dir2.
Можно исключить определенные каталоги при использовании команды находки в соответствии с Ubuntu.
Можно использовать команду находки следующим образом для нахождения всех каталогов кроме tmp каталога:
find /path/to/dest -type d \( ! -name tmp \) -print
Найдите все каталоги кроме tmp и кэша:
find /path/to/dest -type d \( ! -name tmp \) -o \( ! -name cache \) -print
-prune
опция удостоверяется, что Вы не убываете в каталог:
find /path/to/dest -type d \( ! -name tmp \) -o \( ! -name cache -prune \) -print
Можно найти, что все *.pl находят кроме tmp и корневого каталога, входят:
find / \( ! -name tmp \) -o \( ! -name root -prune \) -name "*.pl" -print
Взятый от:
http://www.cyberciti.biz/faq/linux-unix-osx-bsd-find-command-exclude-directories/