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

47

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

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

    
задан Bob Perez 19.06.2012 в 19:12
источник

4 ответа

61

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

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

Пример:

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

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

    
ответ дан lgarzo 19.06.2012 в 19:18
13

Чтобы избежать всех результатов «Отказано в разрешении», вы можете использовать:

find / -type d -name "*99966*" -print 2>/dev/null

См. эту статью на нулевом устройстве , а этот - на стандартные потоки для получения дополнительной информации.

    
ответ дан Dan Fletcher 11.02.2015 в 23:18
4

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

find / -type d | grep "directory name"

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

    
ответ дан Collin 26.12.2016 в 19:49
3

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

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

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

    
ответ дан belacqua 19.06.2012 в 19:32