Enviando uma lista (arquivo de texto) de arquivos e caminhos para xargs

2

Eu tenho um arquivo que contém os caminhos de vários arquivos.

files.txt:

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

Eu quero usá-lo em um script para processar os arquivos.

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

Eu basicamente quero enviar esses caminhos como uma string para este programa IDL via xargs como um argumento.

No entanto, quando eu uso cat, na verdade, ele cria arquivos como file1.txt, file2.txt e gera o conteúdo deles diretamente como um argumento nesse programa IDL.

Como posso obtê-lo apenas para enviar cada linha deste files.txt como uma string para este script IDL?

    
por user138717 15.10.2015 / 18:57

2 respostas

1

Você poderia usar um pequeno script com um loop como este

Deixe ser runIDL.sh

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

É simples, elegante e deve funcionar como um encanto. Basta executar ./ runIDL files.txt e pronto!

Espero que isso ajude!

    
por 15.10.2015 / 20:01
-1

O GNU Parallel pode funcionar para você:

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

O padrão será 1 processo por núcleo da CPU e garantirá que a saída de dois trabalhos paralelos não seja misturada.

O GNU Parallel é um paralelizador geral e facilita a execução de trabalhos em paralelo na mesma máquina ou em várias máquinas para as quais você tem acesso ssh. Muitas vezes, pode substituir um loop for .

Se você tem 32 tarefas diferentes que você quer rodar em 4 CPUs, uma forma direta de paralelizar é rodar 8 tarefas em cada processador:

O

GNUParallelgeraumnovoprocessoquandoumtermina-mantendoasCPUsativaseeconomizandotempo:

Instalação

Se o GNU Parallel não for empacotado para sua distribuição, você poderá fazer uma instalação pessoal, que não requer acesso root. Isso pode ser feito em 10 segundos ao fazer isso:

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

Para outras opções de instalação, consulte o link

Saiba mais

Veja mais exemplos: link

Assista aos vídeos de introdução: link

Percorra o tutorial: link

Inscreva-se na lista de e-mail para obter suporte: link

    
por 05.07.2016 / 13:17

Tags