bashでlsを使ってディレクトリだけをリストアップする検証
カレントパス内のディレクトリを一覧表示するコマンドです。ls -d */`
パターン */
は具体的に何をするのでしょうか。
また、上記のコマンド(例:ls -d /home/alice/Documents
)で絶対パスを与えると、そのパス内のディレクトリのみをリストアップすることができますが、これはどのようにして行うのでしょうか?
882
3
/
は、カレントディレクトリ内のすべてのサブディレクトリにマッチするパターンです(
は、すべてのファイルと*サブディレクトリにマッチしますが、
/はディレクトリに限定します)。同様に,/home/alice/Documents以下のすべてのサブディレクトリをリストアップするには,
ls -d /home/alice/Documents/*/` とします。4つの方法があり、それぞれ出力形式が異なります。
1.
echo
を使う例:
echo */
,echo */*/
以下はその結果です。
2.ls` のみを使用する場合
例)
ls -d */
これがまさに私が得たものです。
または、リストとして(詳細情報付き):
ls -dl */
3.ls
と
grep` の使用例:
ls -l | grep "^d"
以下のような結果になりました。4.Bashスクリプト(ファイル名にスペースが含まれる場合は推奨しません
例:
for i in $(ls -d */); do echo ${i%%/}; done
以下は、私が得た結果です。
末尾に「/」をつけたい場合は、次のようになります。
for i in $(ls -d */); do echo ${i}; done
となります。使っています。
これは、末尾にスラッシュのない単一のカラムを作成するもので、スクリプトに便利です。
私の2セントです。