【发布时间】:2018-04-08 00:08:46
【问题描述】:
例如,我有一个文本文档,其中包含我可能在目录中拥有的文件名列表。我想 grep 或使用 find 来找出这些文件名是否存在于特定目录及其子目录中。目前我可以通过find . | grep filename 手动执行此操作,但每次只有一个,当我有超过 100 个文件名时,我需要检查是否有它们,这真的很烦人且耗时。
最好的方法是什么?
【问题讨论】:
例如,我有一个文本文档,其中包含我可能在目录中拥有的文件名列表。我想 grep 或使用 find 来找出这些文件名是否存在于特定目录及其子目录中。目前我可以通过find . | grep filename 手动执行此操作,但每次只有一个,当我有超过 100 个文件名时,我需要检查是否有它们,这真的很烦人且耗时。
最好的方法是什么?
【问题讨论】:
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
也许这会有所帮助。
【讨论】:
cat filenames.txt | xargs -I {} find . -type f -name {},xargs应该使用复杂的参数设置
如果文件没有移动,自上次更新b 运行以来,通常
将文件列表读入一个数组并通过定位进行搜索。如果文件名很常见(或作为其他文件的一部分出现),请按基本目录 grep 它们,在哪里可以找到它们:
< file.lst mapfile filearr
locate ${filearr[@]} | grep /path/where/to/find
如果文件名可能包含空格或字符,可能会被 bash 解释,则必须采用通常的屏蔽机制。
【讨论】:
一位朋友通过find . | grep -i -Ff filenames.txt帮助我解决了这个问题
【讨论】: