在没有 shell 重定向的情况下,在单次调用中将多个文件复制到一个(追加、合并)中?

sda*_*aau 5 scripting text-processing file-copy cat

我正在寻找某种我可以使用的命令,将多个文件复制/附加到一个文件中;但没有外壳重定向(我想尝试一下call_usermodehelper,在call_usermodehelper / call_usermodehelperpipe 用法中看到类似的问题- 堆栈内存溢出)。我知道我可以使用其他方式:

cat file1 file2 > file.merge
Run Code Online (Sandbox Code Playgroud)

...但这需要shell重定向。

到目前为止我的发现:

  • 不能使用cat,因为它的默认标准输出输出不能被重新定义(例如,通过命令行参数)——除此之外,它是外壳重定向
  • 不能dd在单个调用中使用,因为它只能接受一个(并且只有一个)if=输入文件参数
  • 不能使用cp,因为它会单独处理多个文件,并且不能将它们全部“合并”到一个位置

那么 - 是否有任何标准工具可以让我做类似(伪代码)的事情:

copytool -i file1 -i file2 -o file.merge
Run Code Online (Sandbox Code Playgroud)

...这样输出file.merge代表file2附加到file1内容?

Sté*_*las 11

你可以做:

sed -n wfile.merge file1 file2
Run Code Online (Sandbox Code Playgroud)

或者:

awk '{print > "file.merge"}' file1 file2
Run Code Online (Sandbox Code Playgroud)

或者:

sh -c 'cat file1 file2 > file.merge'
Run Code Online (Sandbox Code Playgroud)

(请注意,根据实现,前两个可能无法正常处理二进制文件)。