![xargs を使用して、環境変数からディレクトリのリストを除外する find コマンドを作成する](https://rvso.com/image/83675/xargs%20%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%97%E3%81%A6%E3%80%81%E7%92%B0%E5%A2%83%E5%A4%89%E6%95%B0%E3%81%8B%E3%82%89%E3%83%87%E3%82%A3%E3%83%AC%E3%82%AF%E3%83%88%E3%83%AA%E3%81%AE%E3%83%AA%E3%82%B9%E3%83%88%E3%82%92%E9%99%A4%E5%A4%96%E3%81%99%E3%82%8B%20find%20%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89%E3%82%92%E4%BD%9C%E6%88%90%E3%81%99%E3%82%8B.png)
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 ...