Jak mogę rekurencyjnie wyszukiwać nazwy katalogów z określonym ciągiem, gdzie ciąg ten jest tylko częścią nazwy katalogu

73

Jak mogę rekurencyjnie wyszukiwać nazwy katalogów z określonym ciągiem, w przypadku gdy ciąg ten jest tylko częścią nazwy katalogu?

Na przykład: nazwa katalogu to „8.0.3-99966_en”, ale chcę rekurencyjnie wyszukiwać katalogi z ciągiem „99966”.

Bob Perez
źródło

Odpowiedzi:

95

Możesz użyć findpolecenia:

find YOUR_STARTING_DIRECTORY -type d -name "*99966*" -print

Przykład:

find ~ -type d -name "*99966*" -print

powinien znaleźć wszystkie katalogi ( -type d) zaczynające się od katalogu domowego ( ~), które mają nazwy zawierające ciąg „99966” ( -name "*99966*") i wypisać je ( -print).

lgarzo
źródło
Jak mogę wykluczyć określony katalog z wyszukiwania? Muszę wyszukiwać /, ale otrzymuję mnóstwo wyników / proc, na których mi nie zależy.
Kozuch
@Kuzuch (po chwili!): Możesz użyć ujemnego grep, przesyłając wyszukiwanie sinf do polecenia, takie jak: znajdź <kolwiek cokolwiek> | grep -v "/ proc", który odfiltruje wszystkie wiersze zawierające szukany ciąg.
Juan Lanus,
19

Aby uniknąć wszystkich wyników „Odmowa zezwolenia”, możesz użyć:

find / -type d -name "*99966*" -print 2>/dev/null

Aby uzyskać więcej informacji, zobacz ten artykuł na temat urządzenia zerowego i ten na standardowych strumieniach .

Dan Fletcher
źródło
działa dla mnie :) ~
smatthewenglish 23.09.17
8

Możesz przesłać dane wyjściowe, aby grepwyróżnić nazwę katalogu
Coś w stylu

find / -type d | grep "directory name"

/Wskazuje, aby przeszukać cały komputer

Collin
źródło
@ Zanna masz rację, zredagowałem odpowiedź. Dzięki za zwrócenie na to uwagi
Collin
3

Łatwym sposobem na to jest użycie find | egrep string. Jeśli trafień jest zbyt wiele, użyj -type dflagi do znalezienia. Uruchom polecenie na początku drzewa katalogów, które chcesz przeszukać, w przeciwnym razie będziesz musiał podać katalog jako argument find.

Innym sposobem na to jest użycie ls -laR | egrep ^d.

A locatekomenda jest również wyposażony w poręczny:locate string

Belacqua
źródło