Jak przeszukać wszystkie podkatalogi, aby znaleźć taki o określonej nazwie?

Odpowiedzi:

18

Spróbować find /dir -type d -name "your_dir_name".

Zamień /dirna nazwę katalogu i zamień "your_dir_name"na nazwę, której szukasz.

-type dkaże findszukać tylko katalogów.

Vinz
źródło
1

W celu uzyskania bardziej ogólnego rozwiązania znajdowania jednego lub większej liczby katalogów i wyszukiwania ich, na przykład znajdowania starych adresów e-mail w repozytoriach git, zobacz następujący wzorzec:

find . -type d -name .git -print0|\
    xargs -0r -I {} find {} -type f -print0 |\
    xargs -0r grep -e '[email protected]'
Hildred
źródło
1
echo **/target

lub uzyskać jeden mecz w linii:

printf %s\\n **/target

Działa to natychmiast po wyjęciu z pudełka. W bash musisz shopt -s globstarnajpierw uruchomić i uważaj, że to również przechodzi przez dowiązania symboliczne do katalogów. W ksh93 musisz uruchomić set -o globstarnajpierw.

Jeśli chcesz dopasować tylko katalogi lub dowiązania symboliczne do katalogów, dodaj końcowy /(tj **/target/.). W zsh, aby dopasować tylko katalogi, ale nie dowiązania symboliczne do katalogów, zrób to **/target(/).

W dowolnej powłoce możesz użyć findpolecenia:

find . -name target

W systemach Linux i Cygwin .opcja jest opcjonalna. Jeśli chcesz dopasować tylko katalogi, dodaj -type d.

Gilles „SO- przestań być zły”
źródło