所以这是一个奇怪的事情。我正在使用 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
当我以普通用户身份执行 find 命令时,例如使用或不使用 sudo
sudo find . –type f –name "*.sh" –exec grep -n “*rds.amazonaws.com” {} +
它将列出根目录中的每个文件。然而,当我 sudo su 进入 root 时,该命令似乎有效?
最佳答案
在问题中,您混淆了 – 和 - 以及“和”。这些是不同的字符。对我来说,该命令给出了以下错误:
查找:未知谓词`-n'
find 将 –type
、–name
和 –exec
(以及之间的所有内容)解释为路径/文件名,然后偶然发现 -n .
请确保您输入的命令正确(关于连字符/破折号问题)
但是,您说过,命令是否有效取决于 sudo
与 sudo su
。因此,我现在假设这是一个复制粘贴问题,正如评论中所建议的那样。 (可能,它也可能是与区域设置相关的效果 - 对此不确定。)
检查路径是否正确。
查找 . -exec pwd {} + |排序-u
应该显示路径,find 命令正在执行(以及错误消息,由于虚假的命令行选项 - find 添加的路径 - 到 pwd
)。
此外, grep
正则表达式似乎是错误的:“*rds”是假的,*
表示“前一个字符任意多次”,例如 grep "你好*o"。 -r
搜索包含世界 Heo
或 Helo
或 Hello
或 Hello
等的文件在。如果您想要搜索包含字符串 rds.amazonaws.com
的每个文件,无论 rds
之前是什么,那么您应该只使用搜索词 "rds\.amazonaws\.com\>"
。 \.
因为您搜索文字点(而不是任何字符),"H.llo"
搜索 Hello
以及 Hallo
(以及其他虚假单词,如 H5llo
),以及 \>
因为 com
应该是单词的结尾,所以它与漫画
不匹配。
如果这些都没有帮助,请根据您所做的具体操作添加列出的文件的一些结果来改进您的问题。
哦,欢迎来到 Stackoverflow,Nabil Aziz。
关于Linux:Find 命令列出所有内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55124429/