試験運用中なLinux備忘録・旧記事

はてなダイアリーで公開していた2007年5月-2015年3月の記事を保存しています。

端末上でディレクトリ内のファイルやディレクトリを一覧する作業について

ここでは端末の環境におけるディレクトリ内のファイルやディレクトリの一覧を取得する作業についてを扱う。

  1. ls系コマンド
  2. シェルの補完を用いる
  3. 端末上で動作するファイルマネージャを用いる

ls系コマンド

ディレクトリ内のファイルやディレクトリの一覧はls,dir,vdirといったコマンドで取得でき、オプション指定をしない場合の表示形式に違いはあるものの、dirvdirlsにオプションを追加したものなので、対応するオプションはlsと共通している。また、これらは色が付かない場合があるので、必要に応じて--colorオプションを付ける。
名前が「.」で始まる項目は隠し項目扱いとなり、そのままでは表示されない。

(単純なリスト)
$ ls ( [オプション...] ) ( [ディレクトリ(省略時は現在の作業ディレクトリ)...] )
$ dir --color ( [オプション...] ) ( [ディレクトリ(省略時は現在の作業ディレクトリ)...] )

(詳細なリスト)
$ ls -l ( [オプション...] ) ( [ディレクトリ(省略時は現在の作業ディレクトリ)...] )
$ vdir --color ( [オプション...] ) ( [ディレクトリ(省略時は現在の作業ディレクトリ)...] )

詳細な形式(-l付き)では

[文字列表記の属性(パーミッション)] [ハードリンク数] [所有者] [所有グループ] [サイズ] [タイムスタンプ] [名前]

の形式で

-rw-r--r-- 1 user group 1234 2009-01-23 01:23 filename.ext 

のように表示される。
オプション指定としては

  • -h(GNUオプション)*1: 詳細リストにおけるサイズを読みやすく表示(K/M/Gなどを用いる)
  • -a(GNUオプション): 「.」で始まる名前の隠しファイル/ディレクトリも表示(付けないと隠れる)
  • -c: 詳細リストにおけるタイムスタンプを最終更新(mtime)でなく状態/属性変更(ctime)で表示
  • -F: 項目名の末尾に種類ごとのマーク*2を付ける

などが利用できる(一部)。
色付き表示の設定については

を参照。
(2009/9/29)ハードリンクとシンボリックリンクについては「ハードリンクとシンボリックリンクについて」を参照。

シェルの補完を用いる

シェルの補完機能により、コマンドの引数を入力中*3Tabを押すと、候補が1つのときには完全なファイル/ディレクトリ名に置き換わるのだが、複数の候補が存在する場合にはTabCtrl+D(シェルによって異なる)を押すと候補が下に一覧表示される。

bash$ less /usr/s[Tabを押す]
(Tabを押した後の表示)
bash$ less /usr/s
sbin/  share/ src/
bash$ less /usr/s[入力位置]

これを利用してディレクトリの「/」までを入力した状態で候補を表示するとそのディレクトリ内の一覧を得ることができる。ただし、候補が多すぎる場合は確認が出ることがあるので、Y/Nで選択する。

bash$ less /usr/share/[Tabを押す]
(Tabを押した後の表示)
bash$ less /usr/share/
Display all [候補数] possibilities? (y or n)
(Yを押すと/usr/share/内の項目が一気に表示され、Nを押すと戻る)

候補が少なければそのまま表示される。

bash$ less /usr/share/doc/gtk+2.0/
(Tabを押した後の表示)
bash$ less /usr/share/doc/gtk+2.0/
NEWS    README

1つに絞られると補完される。

bash$ less /usr/share/doc/gtk+2.0/R[Tabを押す]
(Tabを押した後の表示)
bash$ less /usr/share/doc/gtk+2.0/README [入力位置]

zshを用いて適切な設定を行うとTabを押す度に候補リスト内の次の項目に切り替わるスタイルの補完も利用でき、候補一覧が長くなっても扱いやすくなる。その場合、「bashの設定をベースにしたzshの設定」の「補完」とコメントされている部分の数行の設定が必要。

端末上で動作するファイルマネージャを用いる

端末内で動作するMidnight CommanderなどのファイルマネージャやEmacsのDiredモード*4などを用いると、ディレクトリ階層を簡単にたどりながら(任意のコマンドの実行を含む)各種操作が行える。
(2014/9/11)関連URLのリンク先を修正

関連URL:

使用したバージョン:

*1:GNUが提供するcoreutils以外の実装(GNU/Linux以外のOS上)では使えないオプション

*2:実行属性付きファイルの「*」、ディレクトリの「/」、シンボリックリンクの「@」など

*3:もちろん、コマンド名部分の入力においても補完は可能

*4:ファイルマネージャ機能で、Ctrl-x dかメニューの「Open Directory...」から初期の階層を指定して開始・Meta-!でシェルコマンドが実行できる