我设法使用 find 来做到这一点:
find 'directory' -type f -name "*.txt" -print0 | xargs -0 cat
我不知道如何使用 grep 来做到这一点。尝试了数千次。
答案1
至少使用 GNU grep (这可能是您所拥有的实现,因为您标记了问题Linux),您可以使用该--include
选项来限制 glob 搜索的文件。将其与空模式结合起来进行模拟cat
:
grep -hr --include='*.txt' '' directory
-h
关闭匹配结果的文件名默认前缀。
答案2
要显示文件的内容grep
,您可以搜索空正则表达式grep "" file.txt
或“行开头”正则表达式grep ^ file.txt
。
我的理解是,目录作为参数给出。如果是这样的话:
grep ^ $(find $1 -name '*.txt')
或者
find $1 -name '*.txt' -exec grep ^ {} \;
这两种解决方案的问题是它们显示的内容全部文本文件,而不是“Afile”作为问题的需要。如果找到多个文本文件,第一个解决方案还会打印文本文件的名称。最后,如果找到太多文本文件,我的第一个解决方案就会中断;xargs
在这种情况下有帮助。