1

私は約40,000のファイルと識別子のリストを持っています。

例:AB000001、AB000002、AB000004、AB000005、AB000006、AB000007

各ファイルには(ファイル名ではなく)識別子が含まれている必要があり、リストにないすべてのファイルを検索する必要があります。

小さなプログラムまたはコマンドを実行して、識別子のリストを含むすべてのファイルを削除するのが最善の方法だと思います。

したがって、コマンド/プログラムを実行した後、AB000003を含むファイルが残ります。

何かを一から書くのではなく、私がこれを達成するのに役立つ、すでに存在する技術や自由ソフトウェアを知っている人はいますか。

編集:ファイルが.xmlであり、多くの識別子(35,000)があるため、手動で実行できないことを追加するのを忘れました。

4

4 に答える 4

2

テキストに識別子があり、各IDが新しい行にあると仮定して、次の手順を実行します。

for /F "tokens=* delims=*" %E in (identifiers.txt) DO (grep -l "%E" *.xml)

出力をにリダイレクトして>> %E.txt、識別子ごとの結果を取得できます

于 2012-12-21T10:31:35.423 に答える
1

list.txt照合する必要のあるすべての識別子を含むファイルを作成できます。次に、サードパーティのソフトウェアを使用せずにFINDSTRを使用すると、一致するものが含まれていないファイルのすべての名前を取得できます。

findstr /L /V /G:list.txt *.txt
于 2012-12-23T14:55:10.170 に答える
0

Grep for Windowsは、その仕事の獣のように見えます。*nixのようなgrepコマンドを使用して作業を実行できるのは当然のことです。

評価版は完全に機能しています。

あなたはおそらく...

grep -l "AB000003" *

識別したいファイルを一覧表示します。

于 2012-12-21T09:30:32.943 に答える
0

IDのリストを含むテキストファイルを準備します。1行に1つのIDが含まれます。それをID.LISTと呼びます

AB000001
AB000002
AB000004
AB000005
AB000006
AB000007
etc.

Windows用の無料のgnugrepを使用して、次のコマンドは、ID文字列を含まないすべてのxmlファイルを一覧表示します。「AB000001」が「AB0000011」のようなものと一致しないように、-wオプション(単語全体に一致)を追加しました。

grep -L -w -f ID.LIST *.xml
于 2012-12-21T12:58:04.750 に答える