2017-07-12 10 views
-1

Linuxでは "cat"は実際にファイルを2つのチャンク(おそらくは)として連結していると思います。私の懸念は、Windowsの "type"コマンドで、ファイルを読み書きすることができると信じられている名前で判断して、新しいファイルに書いています。これをすれば、どれくらいの時間がかかるかわからない。Windowsのコマンドタイプの仕組み

これは(ちょうど猫のようにそれが出てファイルに両方のファイルを組み合わせた)その使用方法です:

型file_name1.txtのfile_name2.txt >>

+0

2つのファイルを結合するには、 'copy file_name1.txt + file_name2.txt out.txt'を使用することもできます。出力ファイルに追加するには、単純に 'copy out.txt + file_name1.txt + file_name2.txt out.txt'を実行してください... – aschipfl

+1

Stack Overflowはプログラミングと開発の質問のサイトです。この質問は、プログラミングや開発に関するものではないので、話題にはならないようです。ヘルプセンターの[ここではどのトピックを参照できますか](http://stackoverflow.com/help/on-topic)を参照してください。おそらく[スーパーユーザー](http://superuser.com/)がより良い場所になるでしょう。 – jww

答えて

0

cat out.txtをLinuxでは、コマンドラインのすべてのファイルを読み込んで標準出力に書き込むことで動作します。コマンドラインが空の場合、標準入力が読み込まれます。

ですから、実行すると:

cat file1 file2 >> file3 

それはfile1を読み取り、stdoutに書き込みます。終了すると、file2と読み、stdoutにも書き込みます。しかし、ああ!、シェルはstdoutfile3に追加するようにリダイレクトしているので、両方のファイルが書き込まれます。

Windowsではtypeは基本的に同じですが、コマンドラインを空にすることはできません(copy CONを使用できます)。

Linuxのcatコマンドでは、splice(2)など、メモリ内のデータのコピーが多すぎないように最適化されていますが、オプションの最適化として表示する必要があります。

0

Linuxのcatと同様に、Windowsのcmd.exeシェルタイプのコマンドは、両方のファイルを読み込んでstdoutに書き込みます。

Linux catとは異なり、ファイルヘッダはstderrから追加されます。同じ効果が必要な場合は、必ずstderrをリダイレクトしてください。

type file1.txt file2.txt 2>NUL 

stdoutをリダイレクトする場合は、必ずstderrをリダイレクトする前に実行してください。

type file1.txt file2.txt >newfile.txt 2>NUL 
+0

_STDERR_の前に_STDOUT_をリダイレクトするかどうかは関係ありません。順序は[2>&1'](https://stackoverflow.com/a/25562437)のようなリダイレクション演算子にのみ関連します(リダイレクトされたハンドルが互いに依存する場合)。ファイルに複数のファイルを書き込むには、実際にはファイルに書き込まれないため、_STDERR_を 'NUL'にリダイレクトする必要はありません。それはコンソールでは邪魔になるかもしれない... – aschipfl