Linux: команда Find все списки - PullRequest
2 голосов
/ 12 марта 2019

Так что это странно. Я использую 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, например

sudo find . –type f –name "*.sh" –exec grep -n “*rds.amazonaws.com” {} +

В нем будут перечислены все файлы в корневом каталоге. Тем не менее, когда я sudo su в корень команда, кажется, работает?

Ответы [ 2 ]

2 голосов
/ 12 марта 2019

В вопросе вы перепутали - и - а также "и". Это разные символы. Для меня эта команда выдает такую ​​ошибку:

find: unknown predicate `-n'

find–type, –name и –exec (и все, что между ними) интерпретируется как путь / имя файла, а затем встречается через -n.

Убедитесь, что вы ввели команду правильно (относительно дефиса)/ dash problem)

Однако вы сказали, что в зависимости от sudo против sudo su команда работает или нет. Итак, я предполагаю, что это проблема копирования и вставки, как это предлагается в комментарии.уже. (Возможно, это может быть также и связанный с локалью эффект - не уверен насчет этого.)

Убедитесь, что указан правильный путь.

find . -exec pwd {} + | sort -u

Должен показать путь, в котором выполняется команда find (и сообщения об ошибках, из-за фиктивных опций командной строки - путей, добавленных find - в pwd).

Кроме того, grep regex кажетсябыть неправым: «* rds» является поддельным, * означает «предыдущий символ любое количество раз»например grep "Hel*o" . -r ищет файлы, связываясь с миром Heo или Helo или Hello или Helllo и так далее.Если вы хотите искать все файлы, содержащие строку rds.amazonaws.com, независимо от того, что находится до rds, вам следует просто использовать поисковый термин "rds\.amazonaws\.com\>".\. потому что вы ищете буквальную точку (а не какой-либо символ, "H.llo" ищет Hello, а также Hallo (и другие поддельные слова, такие как H5llo) и \>, потому что comдолжно быть концом слова, поэтому оно не соответствует comic.

Если ничего из этого не помогло, улучшите свой вопрос, добавив некоторые результаты в списке файлов в зависимости от того, что именно вы сделали.

О, и добро пожаловать в Stackoverflow, Набиль Азиз.

0 голосов
/ 12 марта 2019

Почему ваша команда не работает, это загадка, но с ней все должно быть в порядке:

find . -name "*.sh" -exec grep "rds.amazonaws.com" {} \;
...