私のディレクトリには10個のファイルがあります。
test1.txt
test2.txt
test3.txt
.
.
test10.txt
除外ファイル名であるexclusion.txtもあり、そのファイル名は次のとおりです。
test1.txt
test2.txt
test3.txt
text4.txt
除外ファイルからファイル名を除いて結果を提供する find コマンドが必要です。
test5.txt
test6.txt
test7.txt
text8.txt
test9.txt
text10.txt
答え1
for file in *.txt;do grep ${file} exclude.txt >/dev/null;r=${?}; if [ $r -ne 0 ]; then echo ${file};fi;done| grep -v exclude.txt
Except.txtが同じディレクトリにない場合は、パイプの後のgrep
最後のコマンドを省略できます。|
答え2
きれいではありませんが、作業は完了です:)
find . -regextype posix-extended \! -regex "\./($(cat exclude.txt | tr '\n' '|')).*$"
注:これは、Except.txtの最後の行にNEWLINEがない場合にのみ機能します。
答え3
find
コマンドを実行してから、grep
テキストファイルにリストされているファイルとは反対の操作を実行できます。
find | grep -v -f exclude.list
ただし、これはその名前のディレクトリ、つまりdir/test1.txt/actual_file
結果の最後の部分に限定されないファイルも除外しますfind
。
この問題を解決するには、$
除外リスト項目の末尾に追加して、行の末尾でのみ一致することを確認してください。
test1.txt$
など。
飛行中はこんな感じ.
find | grep -v -f <( sed 's/$/$/' exclude.list )
-type f
結果にファイルのみを含めるオプションを追加することもできます。