Enviar una list (file de text) de files y routes a xargs

Tengo un file que contiene las routes de varios files.

files.txt:

/path/to/file1.txt /path/to/file2.txt ... /path/to/fileN.txt 

Quiero usarlo en un script para procesar los files.

 cat files.txt | xargs -P 12 -L 1 -I % /software/Linux/itt/idl/idl81/bin/idl -e program -args % 

Básicamente quiero enviar estas routes como una cadena a este progtwig IDL a través de xargs como argumento.

Sin embargo, cuando uso cat, en realidad es cats1.txt, file2.txt y muestra su contenido directamente como argumento en este progtwig IDL.

¿Cómo puedo conseguir que envíe todas y cada una de las líneas de este file.txt como una cadena a este script IDL?

Podría usar un pequeño script con un bucle como este

Déjalo ser runIDL.sh

 #!/bin/ksh while (read filepath) do /software/Linux/itt/idl/idl81/bin/idl -e program -args "$filepath" done < "$1" 

Es simple, elegante y debería funcionar como un encanto. Simplemente ejecuta ./runIDL files.txt ¡ y listo !

¡Espero que esto ayude!

GNU Parallel puede funcionar para usted:

 cat files.txt | parallel /software/Linux/itt/idl/idl81/bin/idl -e program -args {} 

Se establecerá de manera pnetworkingeterminada en 1 process por núcleo de CPU y se asegurará de que la salida de dos trabajos paralelos no se mezclará.

GNU Parallel es un paralelizador general y hace que sea fácil ejecutar trabajos en paralelo en la misma máquina o en varias máquinas a las que tiene acceso ssh. A menudo puede replace un bucle for .

Si tiene 32 trabajos diferentes que desea ejecutar en 4 CPU, una manera directa de paralelizar es ejecutar 8 trabajos en cada CPU:

Programación simple

En cambio, GNU Parallel genera un nuevo process cuando uno finaliza, manteniendo las CPU activas y ahorrando time:

Programación paralela de GNU

Instalación

Si GNU Parallel no está empaquetado para su distribución, puede hacer una installation personal, que no requiere acceso a la raíz. Se puede hacer en 10 segundos al hacer esto:

 (wget -O - pi.dk/3 || curl pi.dk/3/ || fetch -o - http://pi.dk/3) | bash 

Para otras opciones de installation, vea http://git.savannah.gnu.org/cgit/parallel.git/tree/README

Aprende más

Vea más ejemplos: http://www.gnu.org/software/parallel/man.html

Mira los videos introductorios: https://www.youtube.com/playlist?list=PL284C9FF2488BC6D1

Repase el tutorial: http://www.gnu.org/software/parallel/parallel_tutorial.html

Regístrese para get la list de correo electrónico para get asistencia: https://lists.gnu.org/mailman/listinfo/parallel