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 ...

関連情報