Use cat
com o redirecionamento de saída. Sintaxe: cat file [file] [[file] ...] > joined-file
.
Exemplo com apenas dois arquivos (você pode ter muitos 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 globbing de shell (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 cat
e redirecionamento de saída - é apenas o Bash fornecendo todos os arquivos como argumentos cat
.
Tipos de arquivo
Ele apenas cola (une) arquivos como faria com papel e fita. Ele não se importa com o formato de arquivo real capaz de lidar com isso. Ele funcionará para arquivos de texto, mas não para PDFs, ODTs etc. Bem, ele será colado, mas não é mais um PDF / ODT válido.
Ordem de adesão
Como phoibos apontou, o globbing do shell resultará em ordem alfabética dos nomes dos arquivos. É assim que o Bash e o shell globbing funcionam.
Adendo sobre input file is output file
erro
Quando o padrão dos arquivos de entrada corresponder ao mesmo arquivo que está sendo produzido, isso causará um erro. É um recurso de segurança. Exemplo: cat *.txt > out.txt
executar a 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ída output.out
não colidirá.
- Trabalhe em diretórios diferentes. No exemplo acima, usei um
input-files-dir
diretório separado para colocar todos os arquivos e enviar para o diretório de trabalho atual. Isso torna impossível obter esse erro.
ls
apenas para listar as correspondências. Por exemplo,ls *.txt
para ver o que está sendo correspondido.