Mogę znaleźć podkatalogi katalogu według
ls -d -- */
lub
ls -l | grep "^d"
ale oba wydają się pośrednie i wyobrażam sobie, że istnieje standardowy sposób na znalezienie tylko katalogów. Czy jest na to właściwy sposób? A jeśli nie, to czy którekolwiek z nich doprowadzą do niepożądanych zachowań w przypadkach skrajnych? (Linki symboliczne, ukryte katalogi itp.)
źródło
find . -maxdepth 1 -type d
to działało na OS X Yosemite.find . -maxdepth 1 -mindepth 1 -type d
. W przeciwnym razie bieżący katalog.
zostanie dołączony.FYI - W ZSH (ale nie BASH), można też to zrobić:
ls -d -- *(/)
; modyfikator mówi zsh tylko do katalogów glob.(/)
To powiedziawszy, nie różni się bardzo od proponowanego przez Ciebie rozwiązania (
ls -d -- */
) i jest dalekie od standardu.O ile dane wyjściowe
ls
(które prawdopodobnie różnią się w zależności od innych flag):źródło
*(/)
rozwija się do nie ukrytych katalogów, podczas gdy*/
rozwija się do nie ukrytych katalogów lub dowiązań symbolicznych do katalogów (lub przynajmniej dowiązań symbolicznych do ścieżek, dla których możemy stwierdzić, że są to katalogi).