所以这是一个奇怪的。我正在使用Linux AMI
[root@test /]# cat /etc/*release
NAME="Amazon Linux AMI"
VERSION="2018.03"
ID="amzn"
ID_LIKE="rhel fedora"
VERSION_ID="2018.03"
PRETTY_NAME="Amazon Linux AMI 2018.03"
ANSI_COLOR="0;33"
CPE_NAME="cpe:/o:amazon:linux:2018.03:ga"
HOME_URL="http://aws.amazon.com/amazon-linux-ami/"
Amazon Linux AMI release 2018.03
当我使用或不使用sudo作为普通用户执行find命令时
sudo find . –type f –name "*.sh" –exec grep -n “*rds.amazonaws.com” {} +
它将列出根目录中的每个文件。然而,当我su su su到root时,命令似乎有用吗?
在这个问题中,你混淆了 - 和 - 以及“和”。这些是不同的字符。对我来说,那个命令会给出这个错误:
find: unknown predicate `-n'
找到解释–type
,–name
和–exec
(以及介于两者之间的所有东西)作为路径/文件名,然后偶然发现-n。
请确保您正确输入了命令(关于连字符/短划线问题)
但是,你说,根据sudo
vs sudo su
命令的工作与否。所以,我现在假设这是一个复制粘贴问题,如评论中所建议的那样。 (可能,它也可能是与语言环境相关的效果 - 对此不确定。)
检查是否在正确的路径中。
find . -exec pwd {} + | sort -u
应该显示路径,find命令正在执行(和错误消息,由于伪命令行选项 - 由find添加的pathes - 到pwd
)。
此外,grep
正则表达式似乎是错误的:“* rds”是假的,*
的意思是“前任字符任意次”,如grep "Hel*o" . -r
搜索文件,包含世界Heo
或Helo
或Hello
或Helllo
等。如果你想搜索包含字符串rds.amazonaws.com
的每个文件,无论rds
之前是什么,那么你应该只使用搜索词"rds\.amazonaws\.com\>"
。 \.
,因为你搜索一个字面点(而不是任何字符,"H.llo"
搜索Hello
以及Hallo
(以及其他虚假词语,如H5llo
)和\>
因为com
应该是单词的结尾,所以它不匹配comic
。
如果这些都没有帮助,可以通过添加列出文件的一些结果来改进您的问题,具体取决于您的具体操作。
哦,欢迎来到Stackoverflow,Nabil Aziz。
这是一个难题,为什么你的命令不起作用,但这个应该没问题:
find . -name "*.sh" -exec grep "rds.amazonaws.com" {} \;