Я использую Ubuntu, и я хотел бы найти все файлы в текущем каталоге и подкаталогах, имя которых содержит строку «John». Я знаю, что это grep
может соответствовать содержимому файлов, но я понятия не имею, как использовать это с именами файлов. Любая помощь будет оценена.
107
Ответы:
Используйте команду поиска ,
источник
#!/bin/bash if [ -z $1 ]; then echo "Error: Specify pattern for search"; else /usr/bin/find . -type f -name "*$1*"; fi
позволит вам просто работатьF search-string
как идеальный ярлык[ -z "$1" ]
было бы немного лучше.if [ -z ]
. Я думал, что это синтаксическая ошибка, но работает. С этого момента я могу упростить часть своего кода.Правильный ответ уже был предоставлен, но, чтобы вы научились помогать себе, я подумал, что добавлю что-нибудь полезное другим способом; Если вы можете резюмировать то, чего вы пытаетесь достичь одним словом, в Linux есть отличная справочная функция.
Это позволяет перечислить все команды, в кратком описании которых есть ваш поисковый запрос. Обычно есть неплохой шанс, что вы найдете то, что вам нужно. ;)
Этот вывод иногда может быть несколько подавляющим, и я бы рекомендовал сузить его до исполняемых файлов, а не всех доступных страниц руководства, например:
или, если вы также хотите найти команды, требующие более высоких уровней привилегий, например:
источник
Команда
find
займет много времени, потому что она проверяет реальные файлы в файловой системе.Самый быстрый способ - использовать
locate
команду, которая сразу выдаст результат:Если команда не найдена, вам необходимо сначала установить
mlocate
пакет и запуститьupdatedb
команду, чтобы подготовить базу данных поиска в первый раз.Подробнее здесь: https://medium.com/@thucnc/the-fastest-way-to-find-files-by-filename-mlocate-locate-commands-55bf40b297ab
источник
использовать его просто. просто введите
ack <string to be searched>
источник
Это очень простое решение с использованием
tree
команды в каталоге, который вы хотите найти.-f
показывает полный путь к файлу и|
используется для передачи вывода дерева по конвейеру,grep
чтобы найти файл, содержащий строкуfilename
в имени.источник