À utiliser cat
avec la redirection de sortie. Syntaxe: cat file [file] [[file] ...] > joined-file
.
Exemple avec seulement deux fichiers (vous pouvez en avoir beaucoup plus):
$ 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
Dans le cas où vous avez "beaucoup de documents", utilisez le globbing shell (modèles):
cat input-files-dir/* > joined-file
Cela joindra tous les fichiers de ce répertoire au répertoire actuel (l'empêchant ainsi de correspondre au fichier de sortie lui-même). Il est totalement indépendant de l'utilisation cat
et de la redirection de sortie - c'est juste Bash qui fournit tous les fichiers comme arguments cat
.
Types de fichier
Il collera (joindra) les fichiers comme vous le feriez avec du papier et du ruban adhésif. Il ne se soucie pas que le format de fichier réel soit capable de gérer cela. Il fonctionnera pour les fichiers texte, mais pas pour les PDF, ODT, etc. Eh bien, il les collera ensemble, mais ce n'est plus un PDF / ODT valide.
Ordre d'adhésion
Comme l'a souligné Phoibos, le globbing du shell entraînera un ordre alphabétique des noms de fichiers. Voici comment fonctionne le globbing Bash et shell.
Addendum sur l' input file is output file
erreur
Lorsque le modèle des fichiers d'entrée correspond au même fichier qu'en sortie, cela provoquera une erreur. C'est une caractéristique de sécurité. Exemple: cat *.txt > out.txt
exécuter la deuxième fois provoquera cela.
Que pouvez-vous faire à ce sujet:
- Choisissez un modèle plus spécifique pour correspondre aux fichiers d'entrée réels, ne correspondant pas au nom de sortie. Exemple: le motif des fichiers d'entrée
*.txt
avec le fichier de sortie output.out
ne se heurtera pas.
- Travaillez dans différents répertoires. Dans l'exemple ci-dessus, j'ai utilisé un
input-files-dir
répertoire séparé pour placer tous les fichiers et les exporter vers le répertoire de travail actuel. Cela rend impossible d'obtenir cette erreur.
ls
simplement la liste des correspondances. Par exemplels *.txt
pour voir ce qui est apparié.