Использование xargs для создания команды find, которая исключает список каталогов из переменной среды

Использование xargs для создания команды find, которая исключает список каталогов из переменной среды

Я знаю, как исключить определенные каталоги из find: find <path> ! -path <path to exclude>. Но это может быть слишком утомительно для набора, когда мне нужно исключить много каталогов, или просто невозможно использовать, когда список каталогов, которые мне нужно исключить, заранее неизвестен.

Итак, скажем, у меня есть список каталогов, хранящихся в переменной. Могу ли я использовать xargsдля построения findкоманды, которая исключает каждый из этих каталогов? Если да, то как?

решение1

Для случая «простой» переменной обратите внимание, что каталоги не могут содержать пробелы, поскольку именно они разделяют их внутри переменной.

excludes='dir1 dir2 dir3'
findexcl=
set -f
for p in $excludes
do
  findexcl="$findexcl ! -path $p"
done
echo find ... $findexcl ...

Связанный контент