Linuxパスのディレクトリのみを一覧表示する
1. 概要
このチュートリアルでは、Linuxで特定のパスのディレクトリのみを一覧表示する方法について説明します。 Linux でディレクトリのみを一覧表示する方法はいくつかありますが、ここではそれらのいくつかについて説明します。
2. lsコマンドの使用
ls コマンドは、ディレクトリの内容を一覧表示するための最も一般的なコマンドの1つです。 ディレクトリのみを一覧表示するには、このコマンドを「- d 」オプションとともに使用できます。このオプションでは、現在のパスのディレクトリのみが一覧表示され、その内容やサブディレクトリは一覧表示されません。
$ ls -d */
arch/ Documentation/ include/ lib/ scripts/ usr/
block/ drivers/ init/ mm/ security/ virt/
certs/ firmware/ ipc/ net/ sound/
crypto/ fs/ kernel/ samples/ tools/
3. dirコマンドの使用
dirコマンドは、ディレクトリの内容を一覧表示します。 ‘- d ‘オプションを指定してこのコマンドを使用すると、現在のパスのディレクトリに関する詳細のみが表示されます。
$ dir -d */
drwxr-xr-x 33 HARDIK users 4096 Feb 12 2018 arch/
drwxr-xr-x 3 HARDIK users 4096 Feb 12 2018 block/
drwxr-xr-x 2 HARDIK users 200 Feb 12 2018 certs/
drwxr-xr-x 4 HARDIK users 4096 Feb 12 2018 crypto/
drwxr-xr-x 122 HARDIK users 8192 Feb 12 2018 Documentation/
... ... ... ... ... ... ...
4. findコマンドの使用
findコマンドは、ディレクトリ階層内の指定された開始点から開始してファイルを検索します。 このコマンドに式を渡して、検索条件を絞り込むことができます。 たとえば、ファイルタイプディレクトリを一覧表示するには、「type」とディレクトリオプション「d」を使用できます。 また、サブディレクトリのすべてのコンテンツが一覧表示されないようにするために、「maxdepth」を使用して検索レベルを制限できます。
$ find . -maxdepth 1 -type d
.
./Documentation
./arch
./block
./certs
./crypto
...
5. treeコマンドの使用
treeコマンドは、ディレクトリの内容を深さインデントされたツリーのような形式で一覧表示します。 このコマンドを使用して、オプション’d‘を使用してディレクトリのみを表示できます。 ただし、これにより、すべてのサブディレクトリとそのコンテンツも一覧表示される場合があります。 したがって、ディレクトリツリーの最大表示深度を制限するレベルオプション( L )を使用できます。
$ tree -d -L 1
.
├── arch
├── block
├── certs
├── crypto
├── Documentation
...
6. echoコマンドの使用
echoコマンドは、渡した標準出力に文字列を表示します。 このコマンドを使用して、ディレクトリの内容を表示することもできます。 ‘ echo * ‘コマンドを試してみると、現在のディレクトリのすべての内容が表示されます。 さらに、ディレクトリのみを一覧表示するには、次のように使用できます。
$ echo */
arch/ block/ certs/ crypto/ Documentation/ drivers/ firmware/
fs/ include/ init/ ipc/ kernel/ lib/ mm/
net/ samples/ scripts/ security/ sound/ tools/ usr/
7. grepを他のコマンドで使用する
ls コマンド( ls -l)または dir コマンドのロングリストオプションを使用してディレクトリの内容をリストすると、最初の列に表示されます。通常のファイルは「– 」として表示され、ディレクトリは「d」として表示されます。
$ ls -l
total 708
drwxr-xr-x 33 HARDIK users 4096 Feb 12 2018 arch
drwxr-xr-x 3 HARDIK users 4096 Feb 12 2018 block
drwxr-xr-x 2 HARDIK users 200 Feb 12 2018 certs
-rw-r--r-- 1 HARDIK users 18693 Feb 12 2018 COPYING
-rw-r--r-- 1 HARDIK users 98556 Feb 12 2018 CREDITS
... ... ... ... ... ... ...
したがって、この出力から、grepツールを使用してディレクトリをフィルタリングできます。 Grepは、文字列の検索に使用されるLinux / Unixコマンドラインツールであるため、オプション’ ^ d ‘は、’d’で始まる文字列をフィルタリングします。
7.1. grepとlsコマンドの使用
‘ ls -l ‘を使用してすべてのファイルとディレクトリを一覧表示し、それらをgrepに渡すことができる場合は、次のようなディレクトリのみを保持するようにフィルタリングできます。
$ ls -l | grep '^d'
drwxr-xr-x 33 HARDIK users 4096 Feb 12 2018 arch
drwxr-xr-x 3 HARDIK users 4096 Feb 12 2018 block
drwxr-xr-x 2 HARDIK users 200 Feb 12 2018 certs
drwxr-xr-x 4 HARDIK users 4096 Feb 12 2018 crypto
drwxr-xr-x 122 HARDIK users 8192 Feb 12 2018 Documentation
... ... ... ... ... ... ...
7.2. grepとdirコマンドの使用
上記と同様の方法で、grepコマンドをdirコマンドと一緒に使用して、ディレクトリを一覧表示できます。
$ dir | grep '^d'
drwxr-xr-x 33 HARDIK users 4096 Feb 12 2018 arch/
drwxr-xr-x 3 HARDIK users 4096 Feb 12 2018 block/
drwxr-xr-x 2 HARDIK users 200 Feb 12 2018 certs/
drwxr-xr-x 4 HARDIK users 4096 Feb 12 2018 crypto/
drwxr-xr-x 122 HARDIK users 8192 Feb 12 2018 Documentation/
... ... ... ... ... ... ...
8. 結論
この記事では、Linuxで任意のパスのディレクトリのみを一覧表示する方法について説明しました。 コマンドls、 dir 、 find 、 tree、、およびechoを使用してこれを達成しました。