Linuxのlsコマンドは、任意のディレクトリの内容を一覧表示するために使用されます。
デフォルトでは、ファイル、ディレクトリ、リンク、名前付きパイプなど、すべてのコンテンツが一覧表示されます。
しかし、ディレクトリのみを一覧表示したい場合はどうでしょうか。どうしますか?
Linuxの他のものと同様に、同じタスクを実行する方法はいくつかあります。ディレクトリのみをリストすることも同じです:
- ls -d * /
- ls -l | grep'^ d'
- 検索。 -maxdepth 1 -type d
- エコー*/
- tree -d -L 1
心配しないで。詳細に説明します。ここでの例で使用するディレクトリの内容は次のとおりです。
lsコマンドを使用してディレクトリのみを一覧表示する
これはディレクトリのコンテンツを表示するために使用するコマンドであるため、使い慣れたlsコマンドを使用して実行することをお勧めします。
サブディレクトリのみを一覧表示するには、-d
を使用します このようなlsコマンドのオプション:
ls -d */
表示される出力は次のとおりです。
[[email protected] Documents]$ ls -d */
another_dir/ my_dir/
なぜ*/
?それがないと、ls -d
ディレクトリ名のみを返します。 -d
オプションリストディレクトリの内容(ファイル、ディレクトリなどを含む)ではありません。
*/
パターンです。 *
を使用 、すべてのコンテンツ(サブディレクトリのコンテンツを含む)と/
を一覧表示します パターンをディレクトリに制限します。
この写真は違いをかなりよく表しています。
ロングリストオプション-l
と組み合わせることができます およびその他のほとんどのオプション:
[[email protected] 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コマンドを使用して切り取ることができます。
[[email protected] Documents]$ ls -ld */ | cut -f1 -d'/'
drwxrwxr-x. 1 abhishek abhishek 16 Nov 7 18:22 another_dir
drwxrwxr-x. 1 abhishek abhishek 44 Nov 7 18:22 my_dir
上記のコマンドは、現在のディレクトリで機能します。同じディレクトリにいない場合はどうなりますか?
この状況では、*/
を使用できます ls -d
を使用してディレクトリのパスの最後に :
ls -d Path/To/Dir/*/
これは、Documentsディレクトリから移動して、Documentsディレクトリ内のディレクトリのみを一覧表示する例です。
[[email protected] ~]$ 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'
ただし、これにより、ディレクトリ名だけでなく、はるかに多くのフィールドが提供されます。
[[email protected] Documents]$ ls -l | grep '^d'
drwxrwxr-x. 1 abhishek abhishek 16 Nov 7 18:22 another_dir
drwxrwxr-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コマンドに要求します。
[[email protected] Documents]$ find . -maxdepth 1 -type d
.
./my_dir
./another_dir
./.my_hidden_dir
上記の出力でわかるように、隠しディレクトリも表示されます。
ディレクトリのみを一覧表示することが目的の場合は、treeコマンドを使用することもできます。
デフォルトでは、treeコマンドは完全なディレクトリ構造を提供します。ディレクトリのみを現在のレベルでのみ表示するように変更できます。
tree -dai -L 1
- d-ディレクトリのみを検索します
- a-非表示のファイルとディレクトリも探します
- i-ツリー構造を表示から削除します
- L1-サブディレクトリに入らないでください
出力は次のとおりです:
[email protected] Documents]$ tree -dai -L 1
.
another_dir
my_dir
.my_hidden_dir
3 directories
ありそうもない候補? Linuxのechoコマンドは、ディレクトリの内容を表示するためにも使用できることを知って驚かれることでしょう。 echo *
を使用してみてください 自分の目で確かめてください。
lsコマンドと同様に、*/
を使用することもできます 現在の作業ディレクトリ内のディレクトリのみを一覧表示するパターン。
echo */
これは、ls -d
で取得したものと同じ出力です。 コマンド:
ファイルではなく、ディレクトリのみを一覧表示する方法は他にもあります。実際、ここで説明する方法には、探しているものに基づいて、いくつかのifとbutが含まれる場合があります。
ディレクトリを表示するだけの場合は、ここで説明したコマンドのほとんどが機能します。ディレクトリ名をスラッシュなどで取得するなど、より具体的なものが必要な場合は、自分でフォーマットを行う必要があります。
このLinuxのヒントがお役に立てば幸いです。質問や提案はいつでも歓迎します。