別のファイルでファイル名例外リストを含むファイルを探す

別のファイルでファイル名例外リストを含むファイルを探す

私のディレクトリには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結果にファイルのみを含めるオプションを追加することもできます。

関連情報