Как я могу рекурсивно искать имена каталогов с определенной строкой, где строка является только частью имени каталога


73

Как я могу рекурсивно искать имена каталогов с определенной строкой, где строка является только частью имени каталога?

Например: имя каталога "8.0.3-99966_ru", но я хочу рекурсивно искать каталоги со строкой "99966".

Ответы:


95

Вы можете использовать findкоманду:

find YOUR_STARTING_DIRECTORY -type d -name "*99966*" -print

Пример:

find ~ -type d -name "*99966*" -print

должен найти все каталоги ( -type d), начиная с вашего домашнего каталога ( ~), чьи имена содержат строку «99966» ( -name "*99966*"), и вывести их ( -print).


Как я могу исключить определенный каталог из поиска? Мне нужно искать /, но я получаю массу результатов / proc, которые меня не волнуют.
Козуч

@Kuzuch (через некоторое время!): Вы можете использовать отрицательный grep, добавив поиск в sinf в команду типа: найти <что угодно> | grep -v "/ proc", которая отфильтрует все строки, содержащие строку поиска.
Хуан Ланус


9

Вы можете перенаправить вывод в grepиметь его выделить имя каталога
что - то вроде

find / -type d | grep "directory name"

/Указывает на поиск по всему компьютеру


@ Занна, ты прав, я отредактировал ответ. Спасибо за указание на это
Коллин

3

Простой способ сделать это - использовать find | egrep string. Если хитов слишком много, используйте -type dфлаг для поиска. Запустите команду в начале дерева каталогов, которое вы хотите найти, или вам также потребуется указать каталог в качестве аргумента find.

Другой способ сделать это - использовать ls -laR | egrep ^d.

И locateкоманда тоже пригодится:locate string

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.