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