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

関連情報