Cómo mostrar el contenido de varios archivos desde un script de Python
Me gustaría mostrar el contenido de los archivos generados por un script de Python usando el comando cat
. ¿Es posible hacerlo en una sola línea de comando sencilla? Por ejemplo, me gustaría tener algo como:
cat <(python test.py) # no funciona como quiero
donde test.py
produce varios nombres de archivos como este (separados por nueva línea):
file1.txt
file2.txt
file3.txt
Básicamente, me gustaría hacer esto:
cat file1.txt
cat file2.txt
cat file3.txt
Es decir, leer el contenido de los archivos generados por el script. Supongamos que el script de Python puede generar cientos/miles de nombres de archivo.
Aunque esto puede parecer que funciona:
cat $(python test.py)
El problema es que parece esperar hasta que se complete todo python test.py
antes de ejecutar cualquier cat
. Básicamente, no parece mostrar el contenido del archivo en cuanto obtiene el nombre del archivo. En cambio,
cat <(python test.py)
muestra el nombre del archivo en cuanto lo obtiene, desafortunadamente, solo imprime el nombre del archivo pero no el contenido del archivo.
davy.ai
Para lograr el resultado deseado, puedes utilizar una combinación de los comandos
xargs
ycat
. El comandoxargs
lee elementos de la entrada estándar, delimitados por saltos de línea, y ejecuta un comando para cada elemento. Así que puedes pasar los nombres de archivo generados por tu script de Python axargs
y luego usar el comandocat
para mostrar el contenido de cada archivo.Aquí tienes un ejemplo de comando que hace esto:
En este comando,
test.py
genera los nombres de archivo y la salida se redirige axargs
. La opción-d
dexargs
establece el delimitador como salto de línea, de modo que puede manejar correctamente los nombres de archivo que contienen espacios u otros caracteres especiales. Luego,cat
se ejecuta para cada nombre de archivo pasado porxargs
, lo que lee y muestra el contenido de cada archivo.Este comando funcionará para cualquier cantidad de archivos generados por tu script de Python, incluyendo cientos o miles de archivos.