Linuxで1行に1つのファイル名をリストする
1. 概要
Linuxコマンドラインで作業する場合、ディレクトリの下にファイルを一覧表示することは、おそらく最も一般的な操作の1つです。
たとえば、1行に1つのファイルなど、特定の形式のファイルのリストを取得したい場合があります。
このクイックチュートリアルでは、それを実現する方法を説明します。
2. lsコマンドと-1オプションの使用
ディレクトリ内のファイルを一覧表示する場合、lsコマンドが最初に考えられるコマンドになる可能性があります。 ただし、オプションを指定せずにコマンドを実行すると、lsコマンドはファイル名を1行で出力します。 例はそれを明確に説明します:
$ ls
aDir file1.txt file2.txt file3.txt
もちろん、一般的に使用されている -l オプションを使用すると、lsで各ファイル名を1行に出力できます。 それは本当だ。 ただし、権限やファイルの所有者などの他の情報は、ファイル名とともに出力に表示されます。
$ ls -l
total 0
drwxr-xr-x 2 kent kent 40 Sep 30 21:07 aDir
-rw-r--r-- 1 kent kent 0 Sep 30 21:07 file1.txt
-rw-r--r-- 1 kent kent 0 Sep 30 21:07 file2.txt
-rw-r--r-- 1 kent kent 0 Sep 30 21:07 file3.txt
ファイル名と1行に1つのファイルのみを表示したい場合は、-1オプションを指定してlsコマンドを実行できます:
$ ls -1
aDir
file1.txt
file2.txt
file3.txt
隠しファイル(ドットファイルとも呼ばれます)を表示する場合は、上記のコマンドに-aオプションを追加できます。
$ ls -1a
.
..
aDir
file1.txt
file2.txt
file3.txt
.hidden
3. ターミナル以外のls出力ターゲットの選択
オプションを指定しないlsコマンドは、ファイル名を1行で出力することを学びました。
$ ls -a
. .. aDir file1.txt file2.txt foo .hidden
また、出力を cat コマンドにパイプすると、出力がそのまま出力されます。
$ echo "This is a beautiful string." | cat
This is a beautiful string.
それでは、lsコマンドの結果をcatコマンドにパイプして、何が表示されるかを見てみましょう。
$ ls -a | cat
.
..
aDir
file1.txt
file2.txt
file3.txt
.hidden
上記の出力でわかるように、各ファイル名は魔法のように一列に並んでいます。
これは、 ls コマンドが、端末、リダイレクト、パイプなどの出力ターゲットに応じて出力を調整するためです。
出力ターゲットが端末でない場合、-1オプションがlsコマンドのデフォルトオプションになります。 したがって、lsは1行に1つのファイル名をターゲットに出力します。
出力ターゲットがパイプの場合、lsコマンドは1行にファイルを出力することに対処しました。
次に、lsがリダイレクトに出力する場合の別の例を見てみましょう。
$ ls -a > /tmp/ls.output
$ cat /tmp/ls.output
.
..
aDir
file1.txt
file2.txt
file3.txt
.hidden
例に示すように、ターゲットがファイルリダイレクトの場合、lsは1行に1ファイルを出力します。
4. 結論
このクイックチュートリアルでは、lsコマンドを使用して1行に1つのファイルを一覧表示する方法について説明しました。 -1オプションが重要です。
さらに、 ls コマンドは、さまざまな出力ターゲットに応じて出力を調整することを学びました。