Copia vários arquivos em um (anexar, mesclar) em uma única chamada sem redirecionamento de shell?

4

Estou procurando algum tipo de comando que eu possa usar para copiar / anexar vários arquivos em um; mas sem redirecionamento de shell (gostaria de testá-lo em call_usermodehelper , consulte um problema semelhante em call_usermodehelper / call_usermodehelperpipe usage - Stack Overflow ). Eu sei que poderia usar:

cat file1 file2 > file.merge

... mas isso requer redirecionamento de shell.

Minhas descobertas até agora:

  • Não é possível usar cat , já que a saída padrão stdout não pode ser redefinida (por meio de, digamos, argumento de linha de comando) - e, além disso, é redirecionamento de shell
  • Não é possível usar dd em uma única chamada, pois só pode aceitar um (e apenas um) if= argumento do arquivo de entrada
  • Não é possível usar cp , pois ele tratará vários arquivos individualmente e não poderá copiá-los todos "mesclados" em um único local

Então - existe alguma ferramenta padrão, que me permita fazer algo como (pseudocódigo):

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

... tal que a saída file.merge representa file2 anexada a file1 contents?

    
por sdaau 04.06.2013 / 22:04

1 resposta

11

Você pode fazer:

sed -n wfile.merge file1 file2

Ou:

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

Ou:

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

(note que dependendo da implementação, os dois primeiros podem não funcionar corretamente com arquivos binários).

    
por 04.06.2013 / 22:13