我正在查找文件列表。

我如何将它输送到另一个实用程序,如cat,以便cat显示所有这些文件的内容?

然后,我将使用grep来搜索这些文件中的一些文本。


当前回答

以下是我的常用镜头:

grep YOURSTRING `find .`

它将打印文件名

其他回答

您正在尝试在文件中查找文本吗?你可以简单地使用grep…

grep searchterm *

这将只递归地打印文件的名称和内容。

find . -type f -printf '\n\n%p:\n' -exec cat {} \;

编辑(改进版): 这将只递归地打印文本(ascii)文件的名称和内容。

find . -type f -exec grep -Iq . {} \; -print | xargs awk 'FNR==1{print FILENAME ":" $0; }'

再试一次

find . -type f -exec grep -Iq . {} \; -printf "\n%p:" -exec cat {} \;

对我来说,听起来像是shell脚本的工作:

for file in 'find -name *.xml'
do
   grep 'hello' file
done

或者类似的东西

列出并查看服务器上/ghi和/jkl目录下所有abc.def文件的内容

find /ghi /jkl -type f -name abc.def 2> /dev/null -exec ls {} \; -exec cat {} \;

要列出带有注释条目的abc.def文件并显示,请查看目录/ghi和/jkl中的这些条目

find /ghi /jkl -type f -name abc.def 2> /dev/null -exec grep -H ^# {} \;

我使用的方法是这样的:

find . -name <filename> -print0 | xargs -0 cat | grep <word2search4>

"find"的"-print0"参数和"xargs"的"-0"参数需要正确处理文件路径/名称中的空白。