Linux znajduje folder w podfolderach

19

Próbuję znaleźć katalog o nazwie 480debugerrorzagnieżdżonej w katalogach potomnych. Nie znam dokładnej ścieżki ani nawet jeśli mam dokładną pisownię katalogu, który chcę znaleźć.

Czy istnieje polecenie systemu Linux, aby znaleźć katalogi z danym prefiksem lub sufiksem, na przykład katalogi o nazwie „debugowanie” lub „błąd debugowania”, z nieznanym prefiksem lub sufiksem?

Bharanikumar
źródło
2
Możesz spróbować locate(lokalizuje pliki) lub find(wyszukuje pliki).
miku
znajdź -typ f-nazwa * ummy ... ale nie dostań
3
Potrzebujesz -typ d . fwyszukuje pliki
thkala

Odpowiedzi:

16

find jest to, czego potrzebujesz:

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

lub

$ find -type d -name '480debugerror'

jeśli masz pewność co do nazwy folderu.

thkala
źródło
8
find . -type d \( -iname '*error*' -o -iname '*debug*' \) 
Zsolt Botykai
źródło
1
locate -i "480debugerror"

sprawdzi bazę danych, która zawiera listę wszystkich plików zindeksowanych na twoim komputerze. Często mam takie scenariusze, więc przeprowadzam wyszukiwania takie jak:

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

który znajduje wszystkie pliki, które mają na swojej ścieżce (niezależnie od wielkości liter [to właśnie oznacza -i]) „debugowanie” i „rejestrowanie” (w przypadku, gdy nie wiesz, | grepoznacza to wyszukiwanie w wynikach, które lokalizują)

Zaletą korzystania z locate over find jest to, że locate będzie generować dane wyjściowe znacznie szybciej (ponieważ tylko sprawdza bazę danych), ale jeśli plik / folder nie zostanie zindeksowany, to niczego nie znajdzie. (aby zaktualizować bazę danych, której możesz użyć sudo updatedb)

jcuenod
źródło
Tylko jeśli masz slocatezainstalowany. Niektóre środowiska produkcyjne nie :-(
Zsolt Botykai
To prawda, ale jeśli jest opcja, powiedziałbym, że lepiej jest znaleźć ...
1

W bash

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

przeszukuje rekurencyjnie katalogi o nazwach zawierających 480, debugowanie lub błąd.

użytkownik2394284
źródło