Tengo algunos archivos clasificados y descomprimidos en un directorio. ¿Cómo combino algunos de ellos en otro archivo ordenado y comprimido? En este momento estoy usando fifos explícitos. ¿Hay alguna manera de hacerlo en Bash sin? Soy un poco novato bash, así que disculpen mi falta de estilo.Combinación de archivos ordenados con fifos
#!/bin/bash
# Invocation ./merge [files ... ]
# Turns an arbitrary set of sorted, gzipped files into a single sorted, gzipped file,
# printed to stdout. Redirect this script's output!
for f in [email protected]
do
mkfifo $f.raw
gzcat $f > $f.raw &
# sort -C $f.raw
done
sort -mu *.raw | gzip -C# prints to stdout.
rm -f *.raw
Busco a convertir esto en algo así como ...
sort -mu <(gzcat $1) <(gzcat $2) <(gzcat $3) ... | gzip -9C# prints to stdout.
... pero no saben cómo. ¿Necesito un bucle para construir los parámetros en la cadena? ¿Hay algún tipo de atajo mágico para esto? ¿Tal vez map gzcat [email protected]
?
NOTA: Cada uno de los archivos supera los 10 GB (y 100 GB descomprimidos). Tengo una unidad de 2TB, así que esto no es realmente un problema. Además, este programa DEBE ejecutarse en O (n) o se vuelve inviable.
veo que ha editado la pregunta mientras yo estaba respondiendo - sí, necesita un bucle para construir la cadena de comandos, y, o bien '' eval' o fiesta -c "$ cmd" 'para ejecutarlo al final . –