Linux найти папку внутри подпапок

19

Я пытаюсь найти каталог с именем 480debugerrorвложенных в дочерние каталоги. Я не знаю точный путь, или даже если у меня есть точное написание каталога, который я хочу найти.

Существует ли команда Linux для поиска каталогов с заданным префиксом или суффиксом, например, каталогов с именем «debug» или «debug error», с некоторым префиксом или суффиксом, который неизвестен?

Bharanikumar
источник
2
Вы можете попробовать locate(находит файлы) или find(находит файлы).
мику
find -type f -name * ум ... но не получить
3
Вам нужен тип d . fищет файлы
thkala

Ответы:

16

find это то, что вам нужно:

$ find -type d -name '*debugerror*'

или

$ find -type d -name '480debugerror'

если вы уверены в названии папки.

thkala
источник
8
find . -type d \( -iname '*error*' -o -iname '*debug*' \) 
Жолт Ботыкай
источник
1
locate -i "480debugerror"

проверит базу данных, в которой перечислены все файлы, проиндексированные на вашем компьютере. У меня часто бывают такие сценарии, и поэтому я выполняю такие поиски:

locate -i "debug" | grep -i "log"

который находит все файлы, которые имеют в своем пути (независимо от регистра [это то, что означает -i]), «debug» и «log» (если вы не знаете, | grepсредство поиска в результатах поиска)

Преимущество использования locate по сравнению с find состоит в том, что locate будет производить вывод намного быстрее (поскольку он только проверяет базу данных), но если файл / папка не проиндексирован, он ничего не найдет. (для обновления базы вы можете использовать sudo updatedb)

jcuenod
источник
Только если вы slocateустановили. Некоторые производственные среды не делают :-(
Жолт Ботыкай
Правда, но если бы вариант, я бы сказал, что лучше найти ...
1

В Баш,

shopt -s nullglob globstar
echo **/*480*/
echo **/*debug*/
echo **/*error*/

рекурсивно ищет каталоги с именами, содержащими 480, отладка или ошибка.

user2394284
источник