我正在查找文件列表。
我如何将它输送到另一个实用程序,如cat,以便cat显示所有这些文件的内容?
然后,我将使用grep来搜索这些文件中的一些文本。
我正在查找文件列表。
我如何将它输送到另一个实用程序,如cat,以便cat显示所有这些文件的内容?
然后,我将使用grep来搜索这些文件中的一些文本。
当前回答
为了实现这一点(使用bash),我将这样做:
cat $(find . -name '*.foo')
这就是所谓的“命令替换”,它在默认情况下去掉换行,这真的很方便!
更多信息请点击这里
其他回答
在bash中,以下代码是合适的:
find /dir -type f -print0 | xargs -0i cat {} | grep whatever
这将找到/dir目录下的所有文件,并安全地将文件名输送到xargs中,xargs将安全地驱动grep。
如果你在/dir目录下有成千上万的文件,跳过xargs不是一个好主意;Cat将由于参数列表长度过大而中断。Xargs会帮你处理的。
-print0参数用于查找与xargs的-0参数相匹配,以正确处理带有空格的文件名。xargs的-i参数允许您在cat命令行中插入所需的文件名。括号被从find导入cat命令的文件名所取代。
您正在尝试在文件中查找文本吗?你可以简单地使用grep…
grep searchterm *
find命令有一个-exec参数,你可以用它来做类似的事情,你可以直接用它来做grep。
例如(从这里,其他好的例子在本页):
find . -exec grep "www.athabasca" '{}' \; -print
使用ggrep。
ggrep -H -R -I "mysearchstring" *
在Unix中搜索包含位于当前目录或子目录中的文本的文件
这对我很有用
find _CACHE_* | while read line; do
cat "$line" | grep "something"
done