如何grep / find一个文件名列表?

时间:2018-04-08 00:08:46

标签: linux grep find

例如,我有一个文本文档,其中包含目录中可能包含的文件名列表。我想grep或使用find来查明这些文件名是否存在于特定目录及其中的子目录中。目前我可以通过find . | grep filename手动完成,但这是一次一个,当我有超过100个文件名时,我需要检查是否有它们,这可能真的很麻烦和耗时。

最好的方法是什么?

3 个答案:

答案 0 :(得分:0)

xargs就是你想要的。案例如下:

假设您有一个名为filenames.txt的文件,其中包含文件列表

a.file 
b.file 
c.file 
d.file 
e.file

并且只有e.file不存在。

终端中的命令是:

cat filenames.txt | xargs -I {} find . -type f -name {}

此命令的输出为:

a.file
b.file
c.file
d.file

也许这很有用。

答案 1 :(得分:0)

如果文件没有移动,自上次更新后,则运行,经常< 24小时,您最快的搜索是找到。

将文件列表读入数组并通过locate进行搜索。如果文件名是常见的(或作为其他文件的一部分出现),请通过基础目录grep它们,在哪里找到它们:

< file.lst mapfile filearr
locate ${filearr[@]} | grep /path/where/to/find

如果文件名可能包含可能由bash解释的空格或字符,则必须采用通常的屏蔽机制。

答案 2 :(得分:0)

一位朋友通过find . | grep -i -Ff filenames.txt

帮我解决了问题