ディレクトリに存在するファイルのリストを作成する必要がありますが、除外するディレクトリのリストを含むファイルも渡す必要があります。
以下の提案を見ましたが、タイプフラグに関してはうまくいきませんでした:
find $dir_name $(printf "! -name %s " $(cat $exclude_file))
それを実行する方法はありますか、それともリスト全体を作成してから、除外ディレクトリ内のリストと部分的に一致するリストを削除する必要がありますか。
承認された回答:
あなたの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