レコード情報の一括表示 [シェルスクリプトの備忘録]
直々思い出しては、「なんか使えそうなんだよな…」と思って、ずっと書き残すのを忘れていた事があったので、そろそろ残しておこうと思います。
以下のようなディレクトリ階層とファイルがあったとします。
root
┣0001
┃┗list.txt
┗0002
┣list.txt
┗0003
┗list.txt
list.txtには、そのディレクトリにあるファイル情報が1行毎(1レコード毎)に記述されているとします。
[/0001/list.txt]
data1,"abc"
data2,"def"
data3,"ghi"
[/0002/list.txt]
data4,"111"
data5,"222"
data6,"333"
[/0002/003/list.txt]
data7,"!!!"
data8,"@@@"
data9,"%%%"
これをrootの場所から、
find . -name 'list.txt' -type f -exec bash -c 'cat {}; echo -n' \;
とすると一括して下の階層にあるlist.txtの内容を一括して出力します。
data1,"abc"
data2,"def"
data3,"ghi"
data7,"!!!"
data8,"@@@"
data9,"%%%"
data4,"111"
data5,"222"
data6,"333"
再帰的にファイルを検索し、且つそのファイルの内容を表示するといった事を1つのプロセスで記述/実行できます。
出力が標準出力に行かないので、パイプでソートはできません。(ですかね?)
シェルスクリプトなら、たった1行でここまでやれるので、その気になれば昔C#のAPIの勉強がてら書いたDelExなんて簡単に実装できますね。
root
┣0001
┃┗list.txt
┗0002
┣list.txt
┗0003
┗list.txt
list.txtには、そのディレクトリにあるファイル情報が1行毎(1レコード毎)に記述されているとします。
[/0001/list.txt]
data1,"abc"
data2,"def"
data3,"ghi"
[/0002/list.txt]
data4,"111"
data5,"222"
data6,"333"
[/0002/003/list.txt]
data7,"!!!"
data8,"@@@"
data9,"%%%"
これをrootの場所から、
find . -name 'list.txt' -type f -exec bash -c 'cat {}; echo -n' \;
とすると一括して下の階層にあるlist.txtの内容を一括して出力します。
data1,"abc"
data2,"def"
data3,"ghi"
data7,"!!!"
data8,"@@@"
data9,"%%%"
data4,"111"
data5,"222"
data6,"333"
再帰的にファイルを検索し、且つそのファイルの内容を表示するといった事を1つのプロセスで記述/実行できます。
出力が標準出力に行かないので、パイプでソートはできません。(ですかね?)
シェルスクリプトなら、たった1行でここまでやれるので、その気になれば昔C#のAPIの勉強がてら書いたDelExなんて簡単に実装できますね。
コメント
コメントの投稿