如何在不同的目录中打印一组文件的特定行

时间:2015-12-01 08:30:54

标签: bash awk sed grep glob

我打算打印不同子目录中的文件列表的特定行。假设我们有一个主文件夹和t001到t010子文件夹。我每个都有一个data.text。 如果所有文件都在一个目录中,我们只能来自here

awk 'FNR==3' Files*

但这里的文件位于子目录中。你有什么主意吗?

修改: 我想我们可以输入:

awk 'FNR==3' ./t*/data.txt

在这里,我无法找到包含我正在寻找的数据的文件。当我使用时:

grep -r -A 1 "string" *

我可以在string之后看到我正在寻找的内容并找到目录,但在这里我只需要字符串下面的行。

1 个答案:

答案 0 :(得分:1)

find . -name "data.txt" -exec awk 'FNR==3' '{}' \;

请参阅how to run find -exec

修改

如果您还需要像grep输出中那样打印文件名,那么您可以使用FILENAME这样做

find . -name "data.txt" -exec awk 'FNR==3 {print FILENAME ": " $0}' '{}' \;

awk 'FNR==3 {print FILENAME ": " $0}' ./t*/data.txt

FILENAME中查找man awk以获取更多信息。