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