ディレクトリに1000個のcsvファイルがあります。それらを順番にまとめたいと思います。それらはimg_size_1.csvからおよそimg_size_1000.csvに名前が付けられます この答え は近いですが、リストファイルを想定しています。これはワンライナーで行うことができますか?
はい、想像を絶する名前のcat
コマンドで可能です。
$ cat *csv > all.csv
cat
はボトルで言うことを行い、入力を連結して標準出力に出力します。上記のコマンドは、all.csv
というファイルがターゲットディレクトリにすでに存在する場合にエラーを発生させます。
$ cat *csv > all.csv
cat: all.csv: input file is output file
このエラーは無視してかまいません。 どうやら、一部のシステム(この回答の下のコメントによるとOSXなど)では、エラーを無視できず、これはループに入り、all.csv
の内容は上書きされます。all.csv
がディスク領域がなくなるまでそれ自体に戻ります。存在する場合は、コマンドを実行する前に、all.csv
が存在する場合は削除してください。
ls -1 *.csv | while read fn ; do cat "$fn" >> output.csv.file; done
それらをアルファベット順に連結したい場合:
ls -1 *.csv | sort | while read fn ; do cat "$fn" >> output.csv.file; done
時間の作成順にそれらを連結したい場合:
ls -1t *.csv | while read fn ; do cat "$fn" >> output.csv.file; done