Я на Ubuntu, и мне бы хотелось найти все файлы в текущем каталоге и подкаталогах, чье имя содержит строку "Джон". Я знаю, что grep
может соответствовать содержимому в файлах, но я понятия не имею, как использовать его с именами файлов. Любая помощь будет оценена.
Linux находит имена файлов с заданной строкой
Ответ 1
Используйте команду find,
find . -type f -name "*John*"
Ответ 2
Правильный ответ уже поставлен, но для того, чтобы узнать, как помочь себе, я подумал, что я бы выбрал что-то полезное по-другому; если вы можете подытожить то, что вы пытаетесь достичь одним словом, в Linux есть мощная функция справки.
man -k <your search term>
Что это значит, это перечислить все команды, в которых есть поисковый запрос в кратком описании. Как правило, довольно хороший шанс, что вы найдете то, что вам нужно.;)
Этот вывод иногда может быть несколько подавляющим, и я бы рекомендовал сузить его до исполняемых файлов, а не всех доступных man-страниц, например:
man -k find | egrep '\(1\)'
или, если вы также хотите искать команды, требующие более высоких уровней привилегий, например:
man -k find | egrep '\([18]\)'
Ответ 3
используйте ack свой простой.
просто введите ack <string to be searched>
Ответ 4
Команда find
займет много времени, так как она сканирует реальные файлы в файловой системе.
Самый быстрый способ - использовать команду locate
, которая немедленно даст результат:
locate "John"
Если команда не найдена, вам нужно сначала установить пакет mlocate
и запустить команду updatedb
, чтобы подготовить базу данных поиска в первый раз.
Подробнее здесь: http://itblog.study.land/the-fastest-way-to-find-files-by-filename-mlocate-locate-and-updatedb-commands-2/
Ответ 5
Это очень простое решение с помощью команды tree
в каталоге, который вы хотите найти. -f
показывает полный путь к файлу, а |
используется для передачи вывода дерева в grep
, чтобы найти файл, содержащий строку filename
в имени.
tree -f | grep filename