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

用于 Windows 的 Grep看起来像是这项工作的野兽。理所当然地,您可以使用类似 *nix 的 grep 命令来完成工作。

评估版功能齐全。

你大概可以...

grep -l "AB000003" *

列出您要识别的文件。

于 2012-12-21T09:30:32.943 回答
0

准备一个包含 ID 列表的文本文件,每行一个 ID。称它为 ID.LIST

AB000001
AB000002
AB000004
AB000005
AB000006
AB000007
etc.

使用适用于 Windows的免费gnu grep ,以下命令将列出所有不包含任何 ID 字符串的 xml 文件。我添加了 -w 选项(匹配整个单词)以防止“AB000001”匹配“AB0000011”之类的内容。

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