"ls"コマンドにディレクトリのみを表示するオプションはありますか?

"ls"コマンドにディレクトリのみを表示するオプションはありますか?

場合によっては、ファイルの代わりにディレクトリのみを確認する必要があります。 lsコマンドにオプションがありますか?それとも、そうしても役に立ちませんか?

編集する:私はMac OS Xを使用していますが、ls -dディレクトリがありますが、ディレクトリが提供されます。.

答え1

すでに選択された回答があることはわかっていますが、次のようにして要求された動作を取得できますls

ls -ld -- */

("--" は引数の終わりを表示し、ハイフンで始まるフォルダ名が追加のコマンドオプションとして解釈されるのを防ぎます。)

これは、実行中の現在の作業ディレクトリに隠されていないすべてのディレクトリを一覧表示します(シェルのglobを拡張するように設定していない場合)(ディレクトリへのシンボリックリンクも含まれています)。他のフォルダのすべてのサブディレクトリを取得するには、次の手順を試してください。

ls -ld /path/to/directory/*/

-l はオプションです。

答え2

いいえ、しかし、単純なfindコマンドでこれを行うことができます(ここでは、-{min,max}depth最近のほとんどの実装でも見られるGNU拡張を使用します)。

find . -mindepth 1 -maxdepth 1 -type d

またはそれに対応するPOSIX(標準):

find . ! -name . -prune -type d

FreeBSDおよび一部の派生物(含む)についてアップルシステム)次のこともできます。

find . -depth 1 -prune -type d

これには隠しディレクトリ(特別なディレクトリで.はない..)も含まれ、ファイルのリストを並べ替えません。また、GNUを介して実装された./各ファイルにプレフィックスを追加します。 。find-printf '%P\n'

またはgrep(ファイル名に改行文字が含まれていないと仮定):

ls -p | grep /

(隠しオプションを含む-Aオプションが追加されましたls)。

必要に応じて、そのいずれかにエイリアスを追加できます。

答え3

隠されたディレクトリも確認する必要があったので、必要に応じて上記の提案を修正しました。

ls -d -- */ .*/

(シェルによっておよび.が含まれる場合があります..

答え4

(macOSでデフォルトで見つかりzsh/bin/sh以前にあった最新バージョンではデフォルトのログインシェルでした)glob修飾子を使用してタイプに応じてファイルを選択できます。

  • 非表示のディレクトリを一覧表示します。

    ls -ld -- *(/)
    
  • すべてのディレクトリを一覧表示します。

    ls -ld -- *(D/)
    

    (常に除外さ.れ、..必要に応じて個別に追加できます)

  • また、ディレクトリへのシンボリックリンクも含まれています。

    ls -ld -- *(D-/)
    

    -シンボリックリンクの確認後、追加の修飾子が適用されます。)

ここでは、-l長いリストを取得するために使用します。不要な一致ファイルのリストを印刷するには(aw on olumn、組み込み)にls置き換えることができます。一致するファイルが存在しない場合にエラーを報告するのではなく、何も印刷されないようにglob修飾子を追加することもできます。ls -ldprint -rC1print r1 CprintN

print -rC1 -- *(ND/)

関連情報