Usar cat
con redirección de salida. Sintaxis: cat file [file] [[file] ...] > joined-file
.
Ejemplo con solo dos archivos (puede tener muchos más):
$ 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
En caso de que tenga "muchos documentos", utilice el patrón de concha (patrones):
cat input-files-dir/* > joined-file
Esto unirá todos los archivos en ese directorio al directorio actual (evitando que coincida con el archivo de salida). Es totalmente independiente del uso cat
y la redirección de salida: solo Bash proporciona todos los archivos como argumentos cat
.
Tipos de archivo
Simplemente pegará (unirá) archivos juntos como lo haría con papel y cinta. No le importa que el formato de archivo real sea capaz de manejar esto. Funcionará para archivos de texto, pero no para PDF, ODT, etc. Bueno, los unirá, pero ya no es un PDF / ODT válido.
Orden de unión
Como señaló phoibos, el bloqueo de shell dará como resultado un orden alfabético de los nombres de los archivos. Así es como funciona Bash y shell globbing.
Anexo sobre input file is output file
error
Cuando el patrón de los archivos de entrada coincide con el mismo archivo que el de salida, esto causará un error. Es una característica de seguridad. Ejemplo: cat *.txt > out.txt
ejecutar la segunda vez causará esto.
Lo que puedes hacer al respecto:
- Elija un patrón más específico para que coincida con los archivos de entrada reales, que no coincida con el nombre de salida. Ejemplo: el patrón de los archivos de entrada
*.txt
con el archivo de salida output.out
no colisionará.
- Trabaja en diferentes directorios. En el ejemplo anterior, he usado un
input-files-dir
directorio separado para colocar todos los archivos y enviarlos al directorio de trabajo actual. Esto hace que sea imposible obtener este error.
ls
solo para enumerar las coincidencias. Por ejemplo,ls *.txt
para ver qué se compara.