寻找solaris命令获取包含搜索模式的所有文件的列表(递归)。我知道如何为linux做这个,但同样的命令在solaris中不起作用:
bash-3.2# uname -a
SunOS D1NCIC-CL01 5.10 Generic_148888-03 sun4u sparc SUNW,Sun-Fire-15000
bash-3.2# find . -type f -print0 | xargs -0 grep -l "contentInFile"
xargs: illegal option -- 0
xargs: Usage: xargs: [-t] [-p] [-e[eofstr]] [-E eofstr] [-I replstr] [-i[replstr]] [-L #] [-l[#]] [-n # [-x]] [-s size] [cmd [args ...]]
find: bad option -print0
find: [-H | -L] path-list predicate-list
答案 0 :(得分:5)
与find
结合使用的情况经常如此,xargs
在这里没用。您可以在Solaris和Linux上运行此可移植命令以获得所需内容:
find . -type f -exec grep -l "contentInFile" {} +
答案 1 :(得分:1)
如果您的文件名不包含任何空格,只需使用-print
并省略-0
中的xargs
。
如果有,请升级到Solaris 11,并使用/usr/gnu/bin/find
和/usr/gnu/bin/xargs
(GNU Tools out of the box in Solaris 11)。
或者,如果您仍然停留在Solaris 10上,请安装GNU查找实用程序(How do I grep recursively?),或How do I grep recursively?(Ag
中建议的其他搜索工具, ack
)。