コマンドでtxtファイルの結合実験 type/cat
目次
条件・手順
- フォルダに「1.txt」「2.txt」を入れています。
- フォルダ内のtxtファイルを一括で読み、新規ファイル「all.txt」に書き出します。
- 「all.txt」は「1.txt」「2.txt」と同じフォルダ内に書き出します。
以下の作業を連続して行います。
- フォルダの中身を調べる
- 「1.txt」を読む
- 「2.txt」を読む
- 一括でtxtファイル全てを読んだ結果を「all.txt」として書き出す。
- フォルダの中身を調べる
- 出来た「all.txt」を読む
実験
順番を入れ替えますが、先にBashから
GitBashからcatを使って
$ ls 1.txt 2.txt
$ cat 1.txt def f1(): print("1")
$ cat 2.txt def f2(): print("2")
$ cat *.txt > all.txt
$ ls 1.txt 2.txt all.txt
$ cat all.txt def f1(): print("1") def f2(): print("2")
コマンドプロンプトからtypeを使って
>dir ドライブ C のボリューム ラベルは Windows です (※途中省略します) 1.txt 2.txt (※途中省略します)
>type 1.txt def f1(): print("1")
>type 2.txt def f2(): print("2")
>type *.txt > all.txt (※途中の余白を省略します) 1.txt 2.txt all.txt
>dir ドライブ C のボリューム ラベルは Windows です (※途中省略します) 1.txt 2.txt all.txt (※途中省略します)
>type all.txt def f1(): print("1") def f2(): print("2") def f1(): print("1") def f2(): print("2")
結果・備考
一括でファイルを読ませた結果を同じフォルダに新規ファイルとしてして書き出す時、
の違いが、それぞれの最後で「all.txt」を読んだ結果でわかりました。
コマンドプロンプトの方は、フォルダ内新規ファイル「all.txt」がダブって書き出している。
たぶんこんな感じで処理してる?
空の「all.txt」作成
→「1.txt」を読む
→「all.txt」に書く
→「2.txt」を読む
→「all.txt」に追記する
→「all.txt」を読む
→「all.txt」に追記する
という手順かどうかは分からないが、内容がダブっている理由はそのへんか。
一方Bashの方は、
「1.txt」「2.txt」をコピー
→「all.txt」に書き出す
のような感じか。ダブっていない。
コマンドプロンプトで行う場合ダブりを避けるためには、
copy *.txt all.txt
と、copyコマンドで一括コピーしたものを「all.txt」として保存する方法なら、同一フォルダ内に新規で作成可能。