unix find コマンドからディレクトリリストを除外する

unix find コマンドからディレクトリリストを除外する

ディレクトリにファイルのリストを作成する必要がありますが、除外するディレクトリのリストを含むファイルも渡す必要があります。

次の提案を見ましたが、フラグを入力すると幸運ではありません。

find $dir_name $(printf "! -name %s " $(cat $exclude_file))

これを行う方法はありますか?それとも、完全なリストを作成し、それを見て、除外されたディレクトリの一部と一致するものを削除する必要がありますか?

答え1

名前以外のパスが含まれている場合は、それらを一致させるためにexclude_file使用する必要があります。-path一致するディレクトリのサブディレクトリを除外するには、サブ-pruneディレクトリも必要です。これは働きます:

find . -type d \( $(printf -- "-path */%s -o " $(cat "$exclude_file")) -false \) -prune -o -print

ファイルを表示したい場合は、ファイルを印刷してください。

find . -type d \( $(printf -- "-path */%s -o " $(cat "$exclude_file")) -false \) -prune -o -type f -print

関連情報