複数のディレクトリにある大量のファイルをまとめて読めるようにしたい

ohmyzsh/plugins at master · ohmyzsh/ohmyzsh https://github.com/ohmyzsh/ohmyzsh/tree/master/plugins

前回の記事「ohmyzshのplugin303種類全部見てみた」のようなことをやろうとした場合、vimのNERDTreeやfzfだとファイルの選択操作をひたすらやり続ける必要があってしんどい。

catで1ファイルにまとめられる。

cat **/* > cats

でもファイル名が書いてないのでわかりにくい、ググるとfindとかsedとかで頑張ってファイル名をつけたりしているひともいるみたい。

man catするとSEE ALSOに以下が紹介されていた。

SEE ALSO
     head(1), more(1), pr(1), sh(1), tail(1), vis(1), zcat(1), setbuf(3)

headとprが使えそうな感じがしたんだけどprは初めて使ってみていいじゃん!ってなったけど思ったような感じにならない。

pr */* > prs

でもファイル名とたくさんの改行があると区切りがあって読みやすい。

以下のようheadのファイル名の飾りを改行20個に置換したらいい感じになった。

head -n 10000000 **/* | perl -pe 's/==>/"\n" x 20/eg' > heads

さすがに1000万行のファイルはなさそう。

もはやheadの意味を成していない。

catの結果にファイル名つけてほしいならhead1000万行すればOK。

ohmyzshのplugins配下のファイルをまとめると82253行だった、そのうち改行が20x733=14660ある。