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. greplsコマンドの使用

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. grepdirコマンドの使用

上記と同様の方法で、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を使用してこれを達成しました。