Linux:查找命令列出所有内容

问题描述 投票:2回答:2

所以这是一个奇怪的。我正在使用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时,命令似乎有用吗?

linux bash amazon-web-services ami
2个回答
2
投票

在这个问题中,你混淆了 - 和 - 以及“和”。这些是不同的字符。对我来说,那个命令会给出这个错误:

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搜索文件,包含世界HeoHeloHelloHelllo等。如果你想搜索包含字符串rds.amazonaws.com的每个文件,无论rds之前是什么,那么你应该只使用搜索词"rds\.amazonaws\.com\>"\.,因为你搜索一个字面点(而不是任何字符,"H.llo"搜索Hello以及Hallo(以及其他虚假词语,如H5llo)和\>因为com应该是单词的结尾,所以它不匹配comic

如果这些都没有帮助,可以通过添加列出文件的一些结果来改进您的问题,具体取决于您的具体操作。

哦,欢迎来到Stackoverflow,Nabil Aziz。


0
投票

这是一个难题,为什么你的命令不起作用,但这个应该没问题:

find . -name "*.sh" -exec grep "rds.amazonaws.com" {} \;
© www.soinside.com 2019 - 2024. All rights reserved.