Utilizzare cat
con il reindirizzamento dell'output. Sintassi: cat file [file] [[file] ...] > joined-file
.
Esempio con solo due file (puoi averne molti altri):
$ 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
Nel caso in cui si disponga di "molti documenti", utilizzare la shell globbing (modelli):
cat input-files-dir/* > joined-file
Ciò unirà tutti i file in quella directory alla directory corrente (impedendo che corrisponda al file di output stesso). È totalmente indipendente dall'uso cat
e dal reindirizzamento dell'output: è solo Bash a fornire tutti i file come argomenti cat
.
Tipi di file
Incollerà (unirà) i file insieme come faresti con carta e nastro. Non importa che il formato file effettivo sia in grado di gestirlo. Funzionerà per file di testo, ma non per PDF, ODT, ecc. Bene, li incollerà insieme, ma non è più un PDF / ODT valido.
Ordine di adesione
Come sottolineato da phoibos, il gorgogliamento della shell comporterà l'ordine alfabetico dei nomi dei file. Ecco come funziona il globbing di Bash e shell.
Addendum input file is output file
sull'errore
Quando lo schema dei file di input corrisponde allo stesso file dell'output, ciò causerà un errore. È una funzione di sicurezza. Esempio: cat *.txt > out.txt
eseguire la seconda volta causerà questo.
Cosa puoi fare al riguardo:
- Scegli un modello più specifico per abbinare i file di input effettivi, non corrispondendo al nome di output. Esempio: il modello di file di input
*.txt
con il file di output output.out
non si scontrerà.
- Lavora in diverse directory. Nell'esempio sopra ho usato una
input-files-dir
directory separata per posizionare tutti i file e l'output nella directory di lavoro corrente. Questo rende impossibile ottenere questo errore.
ls
solo per elencare le partite. Ad esempiols *.txt
per vedere cosa viene abbinato.