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”.

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).


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,


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


@ 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

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.