2011-01-20 16 views

Odpowiedz

5

Jeśli potrzebujesz tylko uzyskać listę podkatalogów (bez dbałości o język/narzędzie do użycia) find to polecenie, którego potrzebujesz.

Jest w stanie znaleźć cokolwiek w drzewie katalogów.

Jeśli przez natychmiast masz na myśli, że potrzebujesz tylko katalogów podrzędnych, ale nie wnuczka -maxdepth opcja zrobi lewy. Następnie -type pozwoli Ci określić, że szukasz tylko dla katalogów:

find YOUR_DIRECTORY -type d -maxdepth 1 -mindepth 1 
+0

To rozwiązanie nie jest poprawne: wynik zawiera katalog nadrzędny 'YOUR_DIRECTORY'. – oberlies

+0

@oberlies: OP nie określił, że chciał tylko nazwy katalogów bez ścieżki względnej. Dla wielu (większość?) Celów './Dir' i' dir' są dokładnie takie same. – peoro

+0

Proponowane polecenie powoduje wyświetlenie następującej listy: 'YOUR_DIRECTORY YOUR_DIRECTORY/subdir01 YOUR_DIRECTORY/subdir02 YOUR_DIRECTORY/...', więc pierwszy wpis na liście nie jest poprawny. – oberlies

11

Korzystając ls -d */.

wyjaśnienie:

  • -d uczyni ls wydrukować nazwy katalogów zamiast jego zawartości.
  • Ukośnik zapewnia uwzględnianie tylko katalogów, a nie plików.
-1

użyć tej

ls | grep/$

grep znaleźć coś, co kończy się w/które katalogi zrobić.

+1

To nie jest ogólne rozwiązanie. Zakłada się, że 'ls' ma alias do' ls -F'. – oberlies

1

Można również użyć poniżej -

$ ls -l | grep '^d' 

Krótkie wyjaśnienie: Jak w długim wykazie, katalogi zacząć „d”, więc powyższe polecenie (grep) odfiltrowuje te wynikają, że początek " d ', które są niczym innym, jak katalogami.

Powiązane problemy