2012-12-21 65 views
1

我有大约40,000个文件和一个标识符列表。删除所有包含字符串的文件

如: AB000001, AB000002, AB000004, AB000005, AB000006, AB000007

每个文件应包含标识符(不是文件名),我需要找到一个大家还不所有文件t在我的列表中。

我相信最好的办法是运行一个小程序或命令来删除包含我的任何标识符列表的所有文件。

因此,在我运行命令/程序后,我将留下一个文件conamins AB000003。

有没有人知道一种技术或自由软件已经存在,这将帮助我实现这一目标,而不是从头开始写点东西。

编辑:忘了补充说,文件是.xml,我有很多标识符(35,000),所以不能真正手动执行它。

回答

2

假设你有你的标识符,在一个新行文本每个ID,然后执行以下操作:

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

可以输出重定向到>> %E.txt让您获得每标识符的结果

+0

这听起来很适合我所要求的,所以我会把它作为接受的答案。然而,我最终解决了这个问题,因为我的XML仍然保存在一个数据库中,所以在将我的标识符加载到表中之后,我对它进行了查询。 –

0

看起来像这个工作的野兽。理所当然的是,你可以使用* nix-like grep命令来完成工作。

评估版本功能齐全。

你也许可以......

grep -l "AB000003" * 

列出要识别的文件。

+0

我唯一的问题是标识我有过目数量之多。如果你知道我的意思,我只需要一个我不需要的标识符列表。也就是说,我不知道AB000003。我只知道我不想要的一切。 –

+0

我肯定会考虑移动它们,如果只是暂时的。然后它只是一个有限步骤的过程,即“消除”ID的数量。你留下的是生命,宇宙和一切的答案。 –

+0

对不起,我不明白。我不介意移动他们,没关系。我只需要能够找到我需要移动的那些。 –

0

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

AB000001 
AB000002 
AB000004 
AB000005 
AB000006 
AB000007 
etc. 

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

grep -L -w -f ID.LIST *.xml 
1

您可以创建一个list.txt文件,其中包含您需要匹配的所有标识符。 然后,不使用第三方软件,但使用FINDSTR,你可以得到不包含匹配的所有文件的名称:

findstr /L /V /G:list.txt *.txt 
相关问题