Как я могу рекурсивно искать имена каталогов с определенной строкой, где строка является только частью имени каталога?
Например: имя каталога «8.0.3-99966_ru», но я хочу рекурсивно искать каталоги со строкой "99966".
Вы можете направить вывод на grep
, чтобы он выделил имя каталога
Что-то вроде
find / -type d | grep "directory name"
/
указывает на поиск во всем компьютере
Вы можете использовать команду find
:
find YOUR_STARTING_DIRECTORY -type d -name "*99966*" -print
Пример:
find ~ -type d -name "*99966*" -print
должен найти все каталоги (-type d
), начиная с вашего домашнего каталога (~
) ), имена которых содержат строку «99966» (-name "*99966*"
) и выводят их (-print
).
Простой способ сделать это - использовать find | egrep string
. Если хитов слишком много, используйте флаг -type d
для поиска. Запустите команду в начале дерева каталогов, которое вы хотите найти, или вам также потребуется указать каталог в качестве аргумента для find
.
Еще один способ сделать это - использовать ls -laR | egrep ^d
.
И команда locate
также пригодится: locate string
Для предотвращения всего "Разрешения, отклоненного" результаты, можно использовать:
find / -type d -name "*99966*" -print 2>/dev/null
См. эту статью о пустом устройстве и этого на стандартных потоках для большего количества информации.