スポンサーリンク
findでマッチしたファイルをxargsでcatに渡してawkで処理
※awkの使い方をまとめて一覧にしました。
参考:awk入門-使い方まとめ一覧-
参考:awk入門-使い方まとめ一覧-
※MACターミナル(BSD系)での動作確認です。
例えば、下記のディレクトリとファイルがあったとします。
$ tree . ├── dir001 │ └── dir │ └── file3.c ├── dir002 │ ├── dir │ │ └── file2.c │ └── file1txt └── file3.c 4 directories, 4 files
findで"file*"にマッチするファイルの2列目の総和を算出します。
参考:[c言語]findとxargsで再帰的にrm/cpする
$ find . -type f -name "file*" | xargs -I{} cat {} | awk -F, '{sum+=$2} END{print "sum="sum}' sum=461
それぞれのコマンドの処理を分解してみたいと思います。
まずはfind処理です。
$ find . -type f -name "file*" ./dir001/dir/file3.c ./dir002/dir/file2.c ./dir002/file1txt ./file3.c
xargsでファイルをcatコマンドに渡します。
$ find . -type f -name "file*" | xargs -I{} cat {} 1,1 2,2 3,3 1,23 2,77 8,44 1,23 2,33 3,67 1,99 2,11 3,78
最後、awkで2列目の総和を算出します。
$ find . -type f -name "file*" | xargs -I{} cat {} | awk -F, '{sum+=$2} END{print "sum="sum}' sum=461
スポンサーリンク