Bashでディレクトリだけを繰り返す方法は?

Bashでディレクトリだけを繰り返す方法は?

一部のディレクトリと一部のファイル(一部は非表示でドットで始まる)を含むフォルダがあります。

for d in *; do
 echo $d
done

すべてのファイルとディレクトリを繰り返しますが、私はディレクトリだけを繰り返したいと思います。どうすればいいですか?

ベストアンサー1

ディレクトリにのみ一致するように末尾のスラッシュを指定できます。

for d in */ ; do
    echo "$d"
done

シンボリックリンクを除外するには、continueループを使用して現在のアイテムがリンクであるかどうかをテストします。-Lシンボリックリンクとして認識するには、名前から末尾のスラッシュを削除する必要があります。

for d in */ ; do
    [ -L "${d%/}" ] && continue
    echo "$d"
done

おすすめ記事