如何在当前目录和子目录中对文件使用head命令?

问题描述:

如果我使用head *.txt | less,它会在当前目录中显示带* .txt的所有文件的头部?如果我想显示位于当前目录和子目录中的.txt文件的头部,该怎么办?如何在当前目录和子目录中对文件使用head命令?

感谢您的帮助

您可以使用发现:

find -name '*.txt' -exec head {} \; 

另一种选择是使用 -

find -name '*.txt' | xargs head 

请注意,-name不需要在所有环境 工作这种情况下,您可以使用

find . | grep ".txt" | xargs head 
+2

我从来没有听说过'-name'不工作,但'find'用你的第二种形式(至少在旧版本中)抱怨失踪参数并不罕见。 – 2010-12-11 15:10:58

如果你的外壳支持的话(zsh的呢,不知道剩下的),你可以使用**语法:

head **/*.txt 
+1

这也支持Bash 4与'shopt -s globstar'或'ksh'与'set -o globstar'。 – 2010-12-11 15:13:14

我试图做同样的事情;这里是我的工作(我输出的文件headtest.txt响应)。请注意,这将通过当前目录和子目录。

find . -type f -exec head '{}' \; >> headtest.txt 

希望这会有所帮助。