在 unix 中循环文件名列表

在 unix 中循环文件名列表

假设在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)选项。

相关内容