コマンド練習。

概要

ls で一行ずつファイル名を表示したい。
複数の手法で試してみた。

 

とりあえず ls したものを載せておく。

> ls
fuga.txt   piyo.txt   test02.txt test04.txt test06.txt
hoge.txt   test01.txt test03.txt test05.txt test07.txt

-1オプション

> ls -1
fuga.txt
hoge.txt
piyo.txt
test01.txt
test02.txt
test03.txt
test04.txt
test05.txt
test06.txt
test07.txt

l(英字)ではなく、1(数字)。

awkを併用

> ls -l | awk 'NR>1 {print $9}' 
fuga.txt
hoge.txt
piyo.txt
test01.txt
test02.txt
test03.txt
test04.txt
test05.txt
test06.txt
test07.txt

ls -l | awk '{print $9}' の実行結果の一行目は、$9 に該当する表示項目が無い。
そのため、改行のみとなり不要なので NR>1 を加えた。
NRは現在処理しているファイルの行番号を指す。
NR>1とすることで、先頭行を非表示にしている。

sedを併用

> ls | sed 's/ /\n/g'        
fuga.txt
hoge.txt
piyo.txt
test01.txt
test02.txt
test03.txt
test04.txt
test05.txt
test06.txt
test07.txt

空白を改行コードに置換。

xargsを併用

> ls | xargs -I{}
fuga.txt
hoge.txt
piyo.txt
test01.txt
test02.txt
test03.txt
test04.txt
test05.txt
test06.txt
test07.txt

Replace occurrences of replace-str in the initial arguments with names read from standard input. (from xargs options (Finding Files))

xargs -I {変数} で標準入力から読み取った名前に置き換える。

ls | xargs -L 1 でも同じ結果が得られる。

参考