地方エンジニアの学習日記

興味ある技術の雑なメモだったりを書いてくブログ。たまに日記とガジェット紹介。

ファイル名についてる日付ごとにファイル数を出すワンライナー

root@52b8c9922ca0:/o# ls -1
2021-10-11-aaa
2021-10-11-bbb
2021-10-11-ccc
2021-10-11-ddd
2021-10-12-aaa
2021-10-13-aaa
2021-10-14-aaa
2021-10-15-aaa
2021-10-16-aaa
2021-10-17-aaa
2021-10-18-aaa
2021-10-18-bbb
2021-10-18-ccc
2021-10-19-aaa
2021-10-19-bbb
2021-10-19-ccc
2021-10-19-ddd
2021-10-19-eee
2021-10-19-fff
2021-10-23-aaa
2021-10-30-aaa
2021-10-30-bbb
2021-10-30-ccc

こんなファイルがある時に日付ごとにファイル数を知りたい場合に使えるやつ

$ for d in $(ls); do echo ${d%-*}; done | uniq | awk '{print "echo -n " $1 " \"\"; ls " $1 "-* 2>/dev/null | wc -l";}' | bash

これを実行するとこんな感じに日付ごとにファイル数が出せます。

root@52b8c9922ca0:/o# for d in $(ls); do echo ${d%-*}; done | uniq | awk '{print "echo -n " $1 " \"\"; ls " $1 "-* 2>/dev/null | wc -l";}' | bash
2021-10-11 4
2021-10-12 1
2021-10-13 1
2021-10-14 1
2021-10-15 1
2021-10-16 1
2021-10-17 1
2021-10-18 3
2021-10-19 6
2021-10-23 1
2021-10-30 3

追記

buty4649さんにcutでもできるということを教えてもらった。こっちの方がとてもシンプルでわかりやすい。。!!

ls -1 | cut -d- -f1,2,3 | sort | uniq -c | sort -nr