find . -type f -exec sh -c ' if [cat ${1} == "abc" ] then echo ${1} fi' _ {} \;
我得到这个错误:
_: -c: line 1: syntax error: unexpected end of file
我在这里做什么是:
找到这个目录,打印文件名称的所有文件,如果文件内容为abc。
谢谢 !
find . -type f -exec sh -c ' if [cat ${1} == "abc" ] then echo ${1} fi' _ {} \;
我得到这个错误:
_: -c: line 1: syntax error: unexpected end of file
我在这里做什么是:
找到这个目录,打印文件名称的所有文件,如果文件内容为abc。
谢谢 !
这里的问题是, [
(又名“测试”)需要被从分离cat
通过的空间中,如下所示:
find . -type f -exec sh -c 'if [ cat ${1} = "abc" ]; then echo ${1}; fi' _ {} \;
你后也失踪分号if
语句和之前fi
声明(它看起来像你有这些在不同的行原来的基础上,这是有间距,可能是由于你有它缩进的方式)
如在下面的评论中指出,运行这会给该错误消息too many arguments in if []
周围使用双引号"cat ${1}"
将避免该错误消息,但这种比较简单的扩展"cat ${1}"
与"abc"
。 什么,你可能要找的是[ "$(cat ${1})" == "abc" ]
。 不幸的是,这很可能是当您比较具有非常长的文件引起的问题"abc"
。
你可以使用grep
做测试,或采取校验(如shasum
)的文件,并测试针对的校验和"abc"
,这取决于你为什么这样做测试。
把空间后“[”和之前“]”和“;” 之后 ']'
另一种方法是使用
[ `cat ${1}` == "abc" ] && echo ${1}