2

У меня есть команда ниже, чтобы найти любую папку / файл с именем "Zero1" или "zero1" (без учета регистра) во всей структуре каталогов от public_html после того, как я войду в удаленный терминал через ssh .

find . -iname "Zero1" -exec readlink -f {} + | tee Zero1.txt

Но если есть несколько папок, соответствующих критериям (должно быть, именно поэтому я использую это), то это ломает, говоря extra operand .... Try readlink --help for more information .

Также он не находит файл с именем «Zero1_Module.xml», который находится в структуре и соответствует критериям (имя должно содержать Zero1).

Это почему ? Как я могу преодолеть это и все еще использовать эту же команду?

1 ответ1

3

Во-первых, опция iname означает что-то другое: согласно Руководству,

шаблон

Как -name, но совпадение не чувствительно к регистру

Тем не менее, образец, который вы предоставили, предназначен для точного соответствия. Если вы хотите найти совпадение для каждого файла, который начинается с нуля (с учетом регистра), вы должны использовать:

 find . -iname 'zero1*'

(не нужно использовать заглавные буквы, так как совпадение не учитывает регистр): звездочка уверяет вас, что найдется совпадение для любого файла, начинающегося с нуля1 (без учета регистра).

Во-вторых, предложение exec должно быть записано следующим образом:

find . -iname 'zero1*' -exec sh -c 'readlink -f $0  | tee Zero1.txt' {} \;

Или же

find . -iname 'zero1' -exec sh -c 'readlink -f $0 | tee -a Zero1.txt' {} \;

Предложение exec должно (почти) всегда заканчиваться на \; и вызов sh -c '...' необходим для предотвращения разрушения оболочки оболочкой; и, наконец, соответствие {} -> $ 0 необходимо для передачи аргументов команде, заключенной в '...', потому что, опять же, оболочка не интерпретирует команды внутри вершин, следовательно, она не может заменить действительное имя файла для {} Таким образом, нам нужно передать имя файла в комманду '...' внешним способом.

Пожалуйста, дайте мне знать, сохраняется ли сообщение об ошибке, касающееся readlink, после этой попытки.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .