Use cat
com o redirecionamento de saída. Sintaxe: cat file [file] [[file] ...] > joined-file
.
Exemplo com apenas dois arquivos (você pode ter muito mais):
$ echo "some text in a file" > file1
$ echo "another file with some text" > file2
$ cat file1 file2 > mergedfiles
$ cat mergedfiles
some text in a file
another file with some text
Caso você tenha "muitos documentos", faça uso de globalização de conchas (padrões):
cat input-files-dir/* > joined-file
Isso unirá todos os arquivos desse diretório ao diretório atual (impedindo que ele corresponda ao próprio arquivo de saída). É totalmente independente do uso de cat
e redirecionamento de saída - é apenas Bash fornecendo todos os arquivos como argumentos para cat
.
Tipos de arquivo
Ele apenas colará (unirá) arquivos como faria com papel e fita. Ele não se importa com o formato de arquivo real sendo capaz de lidar com isso. Ele funcionará para arquivos de texto, mas não para PDFs, ODTs, etc. Bem, eles serão colados juntos, mas não é mais um PDF / ODT válido.
Ordem de adesão
Como phoibos apontou , a globalização da concha resultará em ordem alfabética de nomes de arquivos. É assim que o Bash e o shell globbing funcionam.
Adendo sobre input file is output file
error
Quando o padrão dos arquivos de entrada corresponder ao mesmo arquivo da saída, isso causará um erro. É um recurso de segurança. Exemplo: cat *.txt > out.txt
executado na segunda vez causará isso.
O que você pode fazer sobre isso:
- Escolha um padrão mais específico para corresponder aos arquivos de entrada reais, não correspondendo ao nome da saída. Exemplo: o padrão dos arquivos de entrada
*.txt
com o arquivo de saídaoutput.out
não colidirá. - Trabalhe em diretórios diferentes. No exemplo acima, usei um diretório
input-files-dir
separado para colocar todos os arquivos e enviá-los para o diretório de trabalho atual. Isso torna impossível obter esse erro.