Text-Processing

在沒有 shell 重定向的情況下,在一次呼叫中將多個文件複製為一個(追加、合併)?

  • June 15, 2017

我正在尋找某種可以使用的命令,將多個文件複製/附加到一個文件中;但沒有外殼重定向(我想嘗試一下,在call_usermodehelper / call_usermodehelperpipe 用法call_usermodehelper中看到類似的問題- 程式碼日誌)。我知道我可以使用:

cat file1 file2 > file.merge

…但這需要外殼重定向。

到目前為止我的發現:

  • 不能使用cat,因為它的預設標準輸出不能被重新定義(例如,通過命令行參數)——除此之外,它是 shell 重定向
  • 不能dd在單次呼叫中使用,因為它只能接受一個(並且只有一個)if=輸入文件參數
  • 不能使用cp,因為它會單獨處理多個文件,並且不能將它們全部“合併”到一個位置

那麼 - 是否有任何標準工具,可以讓我做類似(虛擬碼)的事情:

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

…這樣輸出file.merge代表file2附加到file1內容?

你可以做:

sed -n wfile.merge file1 file2

或者:

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

或者:

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

(請注意,根據實現的不同,前兩個可能不適用於二進製文件)。

引用自:https://unix.stackexchange.com/questions/78233