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