假设在unix目录中,有一些文件名相同但扩展名不同的文件,例如
abc.001
abc.002
abc.003
可以有 n 个文件。
我需要首先从目录中获取文件,然后迭代每个文件。使用下面的命令我正在获取文件,但任何人都可以帮助如何迭代每个文件并读取每个文件并进行处理。?
find "/tmp/files/" -name "abc.*" -type f -exec echo {} \;
答案1
为什么要迭代?grep
一次接受多个文件参数,所以
grep PATTERN abc.*
应该管用。
如果文件并非全部位于同一目录中,find
可以选择使用:
find /tmp/files -name 'abc.*' -type f -exec grep PATTERN /dev/null {} +
最后+
告诉我们一次性find
传递尽可能多的文件。grep
这/dev/null
是为了确保至少传递 2 个文件,grep
因此grep
始终输出每个匹配的文件名。对于 GNU grep
,您可以使用-H
(又名--with-filename
)选项。