連載
» 2016年07月05日 05時00分 UPDATE

Linux基本コマンドTips(29):【 ls 】コマンド(並べ替え編)――表示結果を並べ替える

本連載は、Linuxのコマンドについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回も、「ls」コマンドを解説します。

[西村めぐみ,@IT]
「Linux基本コマンドTips」のインデックス

Linux基本コマンドTips一覧

 本連載では、Linuxの基本的なコマンドについて、基本的な書式からオプション、具体的な実行例までを分かりやすく紹介していきます。今回も「ls」コマンドの応用編として、表示結果を並べ替える方法を紹介します。

lsコマンドとは?

 「ls」はファイルを一覧表示する他、ファイルの詳細情報を表示する際にも使えるコマンドです。

 「ls ディレクトリ名」でディレクトリ内にあるファイルの一覧を、「ls」のみで実行した場合はカレントディレクトリ内にあるファイルの一覧を表示します。また、「ls file*.txt」のように、ワイルドカードで指定することもあります。


lsコマンドの書式

ls [オプション] [ファイルまたはディレクトリ……]

※[ ]は省略可能な引数を示しています



lsコマンドの主なオプション

 lsコマンドの主なオプションは次の通りです。

●表示フォーマット関係
短いオプション 長いオプション 意味
-l 長いフォーマットで表示する。ディレクトリを指定した場合、最初にトータルのブロック数を表示してからディレクトリ内のファイルの情報を表示する
-o 「-l」と同じだが、グループ情報は表示しない
-g 「-l」と同じだが、ファイル所有者を表示しない
-n --numeric-uid-gid 「-l」と同じだが、所有者とグループ名の代わりにUIDとGIDを数値で表示する
--full-time 「-l」と同じだが、完全な日時を表示する(「-l --time-style=full-iso」と同じ)
-G --no-group 「-l」と併用したとき、グループ名を表示しない
--author 「-l」と併用したとき、各ファイルの作成者を表示する

●サイズ関係
短いオプション 長いオプション 意味
-h --human-readable 「-l」と併用したとき、サイズを人が読みやすい形式で表示する(例:1K、234M、2G)
--si 「-h」と同じだが、乗数の単位として1024の代わりに1000を使用する
-k 「-l」と併用したとき、サイズを1KB単位(1024バイトの倍数)で表示する
--block-size=SIZE 「-l」と併用したとき、サイズを「SIZE」の倍数として表示する。SIZEは1024単位のK、M、G……および1000単位のKB、MB、GB……などが使用可能。例えば、「--block-size=M」とすると1M単位(1,048,576の倍数)で表示

●時刻関係
短いオプション 長いオプション 意味
-c 「-l」と併用したとき、更新日の代わりに「ctime」(ファイルの属性など変更した時刻)を表示する
-u 「-l」と併用したとき、更新日の代わりに最終アクセス日を表示する
--time=WORD 「-l」と併用し、ファイル更新時刻の代わりに「WORD」で指定した時間を表示する(WORDが「atime」の場合は「-u」相当、「access」の場合は「-u」相当、「use」の場合は「-u」相当、「ctime」「status」の場合は「-c」相当)
--time-style=STYLE 「-l」と併用し、「STYLE」で指定した形式で時間を表示する(STYLEは「full-iso」「long-iso」「iso」「locale」「FORMAT」が指定可能。FORMATは「date」コマンドと同様に指定)

●タイプ識別子関係
短いオプション 長いオプション 意味
-F --classify 名前の後にタイプ識別子(*/=>@|のいずれか)を付けて出力する(第26回「ファイルの種類が分かるように一覧表示する」参照
--file-type 「-F」と同じだが、実行ファイルを表す「*」は付けない
-p --indicator-style=slash ディレクトリの場合のみ「/」を付けて表示する

●その他の情報
短いオプション 長いオプション 意味
-i --inode 各ファイルの前にファイルの「iノード番号」(ファイルを管理するのに使われている数値)を表示する
-s --size 各ファイルの前にファイルのブロック数を表示する
-Z --context 各ファイルのSELinuxセキュリティコンテキストを表示する

●出力フォーマット
短いオプション 長いオプション 意味
-C リストを常に複数の列で出力する(リダイレクトやパイプで画面以外に出力した場合も画面表示と同じように複数の列で出力する:第26回「常に1行で/常に複数行で表示する」参照
-1 リストを常に1件1行で表示する(画面表示の際もリダイレクトやパイプで画面以外へ出力した場合と同じように1行1件で表示する)
-m ファイル名のリストをカンマで区切って表示する
-x 複数列の表示でファイル名を列方向ではなく行方向(縦方向)に並べる
-T 数 --tabsize=文字数 タブ幅を8の代わりに指定した文字数にする
-w 数 --width=文字数 スクリーン幅を指定した文字数にする
--format=WORD 表示スタイルをWORDで指定(例:「--format=long」で「-l」相当。WORDが「across」「horizontal」の場合は「-x」相当、「commas」の場合は「-m」相当、「long」「verbose」の場合は「-l」相当、「single-column」の場合は「-1」相当、「vertical」の場合は「-C」相当)
-Q --quote-name ファイル名をダブルクオート(")で囲む
--quoting-style=WORD ファイル名のクオートをWORDで指定された形式で行う(WORDには「literal」「locale」「shell」「shell-always」「c」「escape」を指定)
--color[=WHEN] カラーで出力する。WHENには「always」「never」「auto」を指定(デフォルトはautoで、出力先が端末の時だけカラーで出力する)、色の設定は環境変数「LS_COLORS」で行う
-N --literal 生の要素名を表示する(制御文字などを特別扱いしない)
-q --hide-control-chars 表示不可能な文字を「?」に置き換える
--show-control-chars 表示不可能な文字をそのまま表示する(出力が端末ではない場合のデフォルト)

●並べ替え関係のオプション
短いオプション 長いオプション 意味
-t ファイルの更新日が新しい順に表示する(「-lc」が併せて指定されている場合は「ctime」順、「-lu」が併せて指定されている場合は最終アクセス日順で表示)
-S ファイルサイズの大きい順に並べる
--group-directories-first 先にディレクトリの一覧を表示してからファイルを一覧表示する(「--sort=none」「-U」と併用した場合は無効)
--sort=WORD 名前順の代わりに「WORD」で指定した順で並べ替える(例:「--sort=time」で更新日順。WORDが「none」は「-U」相当、「extension」は「-X」相当、「size」は「-S」相当、「time」は「-t」相当、「version」は「-v」相当)
-v 自然な数字(version)順でソートする
-X 拡張子のアルファベット順にソートする
-r --reverse 並び順を反転させる
-U ファイルを並べ替えず、ディレクトリに含まれている要素順で表示する
-f ファイルを並べ替えず、ディレクトリ情報のままで表示する(「-aU」が有効になり、「--color」が無効になる)

●表示対象関係のオプション
短いオプション 長いオプション 意味
-a --all ドットファイルも表示する
-A --almost-all ドットファイルも表示する、ただし「.」と「..」を除く
-B --ignore-backups 「~」で終了する要素を一覧表示しない
--ignore=PATTERN シェル形式の「PATTERN」(「D*」や「file[1-3].txt」など)に一致する要素は表示しない
--hide=PATTERN シェル形式の「PATTERN」に一致する要素は表示しない(「-a」または「-A」で上書きされるため「--hide=".b*"」のような指定は無効)
-d --directory ディレクトリの内容ではなく、ディレクトリそのものの情報を表示する(シンボリックリンクもたどらない)
-H --dereference-command-line コマンドラインで指定したファイルやディレクトリがシンボリックリンクの場合は、リンク先の情報で表示(「-F」「-d」「-l」と一緒に使う。例えば、「/bin」が「/usr/bin」へのシンボリックリンクの場合、「ls -l /bin」ではシンボリックリンクの情報が表示されるが、「ls -lH /etc」では「ls -l /usr/bin」と同じ結果になる)
--dereference-command-line-symlink-to-dir コマンド行のシンボリックリンクがディレクトリを指している場合には、シンボリックリンクをたどる
-L --dereference ディレクトリ内のファイルも含めて、全てをシンボリックリンクのリンク先の情報で表示する
-R --recursive ディレクトリを指定した場合、再帰的に表示する


更新日の順に表示する

 「-t」オプションを付けると、ファイルを更新日が新しい順に表示します。「-l」オプションを一緒に指定すれば更新日も併せて確認できます。

コマンド実行例

ls -tl 対象

(対象を指定しなかった場合は、カレントディレクトリのファイル)


 以下の画面1の実行例では、「ls -tl /bin/」で「/bin」ディレクトリ下のファイルを新しい順に表示しています。一番下に表示されるのが、タイムスタンプが一番古いファイルです。

画面1 画面1 「-t」オプションを付けると、ファイルを新しい順番で一覧表示できる

※CentOSの場合、「/bin」は「/usr/bin」へのシンボリックリンクのため、「ls -tl /bin」のように最後の「/」を省略すると、「/bin」というシンボリックリンクファイルの情報が表示されます。「ls -tl /bin/」のように「/」記号を付けるか、「ls -tl /bin/*」のように指定しましょう。



 なお、「-t」や「-f(ファイルを並べ替えない)」など、並び順に影響を与えるオプションが指定されていない場合は、アルファベット順に表示されます。



新しいファイルを確認する

 「-t」オプションは新しいファイルが一番上に表示されるため、たくさんのファイルが表示された場合には、新しいファイルが画面から流れてしまいます。

 そこで「-r」オプションを併用して「逆順表示」にすると、リストの最後にサインファイルが表示されるので“新しいファイル”が確認しやすくなります。作業ディレクトリにたくさんのファイルがあるような場合、特に便利に使えるオプションです。

コマンド実行例

ls -trl 対象

(対象を指定しなかった場合は、カレントディレクトリのファイル)


 以下の画面2の実行例では、「ls -trl /etc/」で「/etc」ディレクトリ下のファイルを一覧表示しています。更新日が最も新しいファイルが一番下に表示されています。

画面2 画面2 「-r」オプションを付けると、ファイルを逆順表示できる。「-t」オプションの併用で、更新日が古いファイルから順番に表示されるようになる


数字の“自然な”順に表示する

 例えば、「file1」と「file2」と「file10」というファイルがあった場合、文字の順番としては「1」が先なので、lsコマンドでは「file1 file10 file2」と表示されます。

 しかし、感覚としては「file1 file2 file10」という順番で表示してほしいと思う方が多いでしょう。このような場合に「-v」オプションを使います。

コマンド実行例

ls -v 対象

(対象を指定しなかった場合は、カレントディレクトリのファイル)


 以下の画面3の実行例では、表示テスト用に「touch」コマンドを使い「touch file0 file1 file2 file10 file11 file12」で6つのファイルを事前に作成しています。また、縦1列に並べて表示する「-1」オプションを使い、「ls -1」と「ls -1v」で「-v」オプションの有無による違いを比較しています。

画面3 画面3 「v」オプションを付けると、ファイルを数字の自然な順番で表示できる


筆者紹介

西村 めぐみ(にしむら めぐみ)

PC-9801N/PC-386MからのDOSユーザー。1992年より生産管理のパッケージソフトウェアの開発およびサポート業務を担当。のち退社し、専業ライターとして活動を開始。著書に『図解でわかるLinux』『らぶらぶLinuxシリーズ』『はじめてでもわかるSQLとデータ設計』『シェルの基本テクニック』など。2011年より、地方自治体の在宅就業支援事業にてPC基礎およびMicrosoft Office関連の教材作成およびeラーニング指導を担当。


Copyright© 2017 ITmedia, Inc. All Rights Reserved.

@IT Special

- PR -

TechTargetジャパン

この記事に関連するホワイトペーパー

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。