web-dev-qa-db-ja.com

シェルリダイレクトなしの単一の呼び出しで複数のファイルを1つに追加(追加、マージ)しますか?

複数のファイルを1つにコピー/追加するために使用できるコマンドを探しています。しかしなしシェルリダイレクト(call_usermodehelperで試してみたいのですが、 call_usermodehelper/call_usermodehelperpipe usage-スタックオーバーフロー )。私は別の方法で使用できることを知っています:

cat file1 file2 > file.merge

...しかし、それにはシェルのリダイレクトが必要です。

これまでの私の発見:

  • catは使用できません。これは、デフォルトのstdout出力を(たとえば、コマンドライン引数を介して)再定義できないためです。それ以外は、シェルリダイレクトです。
  • ddは単一の呼び出しでは使用できません。if=入力ファイル引数を1つ(および1つのみ)しか受け入れることができないためです。
  • cpは使用できません。複数のファイルを個別に処理し、それらをすべて「マージ」して1つの場所にコピーすることができないためです。

だから-(疑似コード)のようなことをすることができる標準的なツールはありますか:

copytool -i file1 -i file2 -o file.merge

...出力file.mergefile2の内容に追加されたfile1を表すように?

5
sdaau

できるよ:

sed -n wfile.merge file1 file2

または:

awk '{print > "file.merge"}' file1 file2

または:

sh -c 'cat file1 file2 > file.merge'

(実装によっては、最初の2つはバイナリファイルでは正しく機能しない場合があります)。

11