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


19

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

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


2
Вы можете попробовать locate(находит файлы) или find(находит файлы).
мику

find -type f -name * ум ... но не получить

3
Вам нужен тип d . fищет файлы
thkala

Ответы:


16

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

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

или

$ find -type d -name '480debugerror'

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



1
locate -i "480debugerror"

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

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

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

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


Только если вы slocateустановили. Некоторые производственные среды не делают :-(
Жолт Ботыкай

Правда, но если бы вариант, я бы сказал, что лучше найти ...

1

В Баш,

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

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

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