Linuxのlsコマンドは、任意のディレク
デフォルトでは、ファイル、ディレクトリ、リンク、名前付きパイプなど、すべての内容が一覧表示されます。
しかし、ディレクトリだけをリストしたい場合はどうすればよいですか? どうやって?
Linuxの何かのように、同じタスクを達成するためのいくつかの方法があります。 ディレクトリのみを一覧表示することも違いはありません:
- ls-d*|
- ls-l|grep’d d’
- 検索します。 -maxdepth1-タイプd
- echo*/
- tree-d-L1
心配するな 私は物事を詳細に説明します。 ここでは、ここでの例で使用するディレクトリの内容を示します:
lsコマンドを使用してディレクトリのみを一覧表示する
これは、ディレクトリの内容を表示するために使
サブディレクトリのみを一覧表示するには、lsコマンドで-d
オプションを次のように使用します:
ls -d */
ここに出力が表示されます:
Documents]$ ls -d */another_dir/ my_dir/
なぜ*/
なのか? それがなければ、ls -d
はディレクトリ名のみを返すためです。 -d
オプションは、その内容(ファイル、ディレクトリなどを含む)ではなくディレクトリをリストします。
*/
はパターンです。 *
を使用すると、すべてのコンテンツ(サブディレクトリの内容を含む)を一覧表示し、/
はパターンをディレクトリに制限します。
この写真はかなりよく違いを示しています。
長いリストオプション-l
および他のほとんどのオプションと組み合わせることができます:
Documents]$ ls -ld */drwxrwxr-x. 1 abhishek abhishek 16 Nov 7 18:22 another_dir/drwxrwxr-x. 1 abhishek abhishek 44 Nov 7 18:22 my_dir/
ディレクトリ名の末尾にスラッシュ(/)を付けたくない場合は、cutコマンドを使用してそれを切り取ることができます:
Documents]$ ls -ld */ | cut -f1 -d'/'drwxrwxr-x. 1 abhishek abhishek 16 Nov 7 18:22 another_dirdrwxrwxr-x. 1 abhishek abhishek 44 Nov 7 18:22 my_dir
特定のディレクトリ内のサブディレクトリのみを一覧表示
上記のコマンドは、現在のディレクトリで動作します。 あなたが同じディレクトリにいない場合はどうなりますか?
この状況では、ls -d
でディレクトリのパスの最後に*/
を使用することができます:
ls -d Path/To/Dir/*/
ここでは、Documentsディレクトリの外に移動し、Documentsディレクトリ内のディレクトリのみを一覧表示する例を示します:
~]$ ls -ld Documents/*/drwxrwxr-x. 1 abhishek abhishek 16 Nov 7 18:22 Documents/another_dir/drwxrwxr-x. 1 abhishek abhishek 44 Nov 7 18:22 Documents/my_dir/
あなたはそれが隠されたディレクトリを一覧表示しないことに気づきましたか? それがこの方法の欠点の1つです。 非表示のディレクトリを表示するにはls -d .*/
を使用できますが、非表示のディレクトリのみを表示します。
lsとgrepコマンドの組み合わせを使用します
特定のコンテンツの出力をフィルタリングするには、いつでも古き良きgrepコマンドに頼ることがで
内容を長いリストにすると、d
で始まるため、ディレクトリを識別できます。
grepを使用して、dで始まる内容をフィルタリングできます:
ls -l | grep '^d'
しかし、これはあなただけのディレクトリ名よりもはるかに多くのフィー:
Documents]$ ls -l | grep '^d'drwxrwxr-x. 1 abhishek abhishek 16 Nov 7 18:22 another_dirdrwxrwxr-x. 1 abhishek abhishek 44 Nov 7 18:22 my_dir
findコマンドを使用してディレクトリのみを一覧表示する
findコマンドを使用してサブディレクトリのみを一覧表示する方法は次のとおりです:
find directory_path -maxdepth 1 -type d
私はあなたがfindコマンドに精通していることを願っています。 それにもかかわらず、私はそれを説明します。
type d
を使用すると、findコマンドにディレクトリのみを検索するように要求します。
maxdepth 1
を使用すると、findコマンドに現在のレベルでのみ検索を維持するように要求します(サブディレクトリ内には入りません)。
Documents]$ find . -maxdepth 1 -type d../my_dir./another_dir./.my_hidden_dir
のfindコマンドでのみsudirectoriesをリストします。
treeコマンドを使用してディレクトリのみを一覧表示する
ディレクトリのみを一覧表示することを目的としている場合は、treeコマンドを使用するこ
デフォルトでは、treeコマンドは完全なディレクトリ構造を提供します。 ディレクトリのみを表示し、現在のレベルでのみ表示するように変更できます。
tree -dai -L 1
- d-ディレクトリのみを探す
- a-隠しファイルとディレクトリも探す
- i-表示からツリー構造を削除する
- L1-サブディレクトリに入らない
:
Documents]$ tree -dai -L 1.another_dirmy_dir.my_hidden_dir3 directories
ディレクトリを一覧表示するechoコマンドを使用する
ありそうもない候補 Linuxのechoコマンドは、ディレクトリの内容を表示するためにも使用できることを知って驚くでしょう。 echo *
を使ってみて、自分で見てみてください。
lsコマンドと同様に、*/
パターンを使用して、現在の作業ディレクトリ内のディレクトリのみを一覧表示することもできます。
echo */
ここでは、ls -d
コマンドで得たものと同じ出力です:
ファイルではなくディレクトリのみを一覧表示する方法があ 実際、ここで説明する方法は、あなたが探しているものに基づいていくつかのifsとbutsを持っているかもしれません。
あなたの目的が単にディレクトリを表示することであれば、私が議論したコマンドのほとんどはうまくいくでしょう。 スラッシュなどでディレクトリ名を取得するだけのような、より具体的なものが必要な場合は、自分で書式設定を行う必要があります。
私はあなたがこのLinuxのヒントが役に立つことを願っています。 質問や提案は常に歓迎されています。