【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に渡すだけなのですが。
    昔の自分はこういうのを知らなくていちいちスクリプトにしていた、という若干恥ずかしいお話でした。おしまい。


    スポンサーリンク




    コメント一覧

    2020/12/24 00:45:28

    Brogemsさん

    Celebrex From Canada usacybes [url=https://bansocialism.com/]overnight cialis delivery[/url] glicky levitra medicamento para impotencia



    コメントを投稿する


    お名前


    コメント内容





    TOP back