DOSのcopyコマンド構文を使用してファイルを連結します。
copy file1.txt+file2.txt all.txt
私はこれができることを知っています...
copy file1.txt+file2.txt file1.txt
これは効率的ですか?それは私が期待していることをしていますか?それは機能しますが、私はそれが実際にfile1.txtに追加するのか、それともfile1.txtをコピーして(悪い)、file2を連結してからfile1.txtに名前を変更するのか(これは効率的ではない)を知りたいですか?
copy
はfile1.txt
とfile2.txt
をメモリにコピーして連結し、file1.txt
に書き込みます。新しいファイルにコピーしてからそのファイルの名前を変更するのではないので、実際には余分なディスクI/Oはほとんどありません。
type
を使用することもできます。
type file2.txt >> file1.txt
>>
演算子はテキストを追加します。しかし、それはもちろん、バイナリファイルでは機能しません。
これは効率的ですか?
承知しました。ただし、/b
スイッチを使用すると、ファイルをテキストとして処理するのではなく、単にバイトを連結するだけでパフォーマンスを向上できます。これは、非常に大きなテキストファイルを連結する場合に特に顕著です。
それは私が期待していることをしていますか?
通常は可能ですが、ファイルがLinux、Mac、または異なるファイル/ラインターミネーターを持つ他のシステムで作成された場合、予期しない結果が生じる可能性があります。テキストファイルの場合でも、一般に/b
スイッチを使用することをお勧めします。
私はそれが実際にfile1.txtに追加しているか、それともfile1.txtをコピーして(悪い)、file2を連結してからfile1.txtに名前を変更しているか(効率的ではない)を知りたいですか?
はい、それは新しい一時ファイルを作成し、元のファイルを削除し、一時ファイルの名前を元の名前に変更しますが、削除と名前の変更には時間がかかりません。元のファイルが巨大でない限り、通常は(冗長)元のファイルのコピー。
同じ拡張子の場合、これを行うことができます-
タイプ*.txt >> fileout.tmp
。
次に、fileout.tmp
を適切な拡張子に。