【linux】ディレクトリ内のファイルに繰り返し処理を実行するワンライナー | 瀬戸内の雲のように

【linux】ディレクトリ内のファイルに繰り返し処理を実行するワンライナー

Posted: 2018-01-30


スポンサーリンク

目次

背景

突然ですが、私はワンライナーが好きです。いちいちシェルスクリプトにすると、ファイルがたくさん増えてしまい汚くなってしまうので、簡単な処理ならできるだけワンライナーにしたいと思っています。

 
今回はそんな私がよく使うワンライナーをご紹介します。

概要

Linuxサーバ上で作業をしている時、入力値としてディレクトリ内のファイル名一覧が欲しいことってありませんか?ありますよね。ええ。

初心者だった頃の私は、そんな時は一度lsコマンドの実行結果をファイルに出力させ、そのファイルをwhile文などで読み込ませる方法を取っていました。

つまりこんな感じです。

# access.logからアクセス数をIP毎にソートする

$ ls -l | grep "access\.log" | awk '{print $NF}' > access_log_list.txt

$ while read FILE ; do echo "==== ${FILE} ====" ;zcat ${FILE} | awk '{print $1}' | sort | uniq -c  ; done < access_log_list.txt

これでも良いのですが、私はこのaccess_log_list.txtみたいなのが溜まってしまうのが嫌なのです。私は面倒くさがりなので、大抵この手のファイルは残ってしまいます。

ワンライナーにする

ということで、上記の処理をワンライナーにしましょう。

$ ls -1 | grep 'access\.log' | while read FILE ; do echo "==== ${FILE} ====" ; zcat ${FILE} | awk '{print $1}' | sort | uniq -c  ; done

これでできます。なんてことはない、ただlsの結果をパイプでつないでwhileに渡すだけなのですが。
昔の自分はこういうのを知らなくていちいちスクリプトにしていた、という若干恥ずかしいお話でした。おしまい。


スポンサーリンク




コメント一覧


コメントを投稿する


お名前


コメント内容





TOP back