Processamento em lote de muitos arquivos [fechados]

0

Eu tenho muitas listas separadas de todas as linhas que contêm "@" quando o início é desejado. Agora estou usando sh list_of_commands para processar os arquivos. Eu estou querendo saber se existe um método mais inteligente para fazer o trabalho.

1) Como eu poderia processar todos os arquivos em lote sem escrever todas as linhas de comando uma por uma?

2) Qualquer método que nomeie os arquivos de saída adicionando um sufixo aos nomes dos arquivos de entrada?

Muito obrigado!

    
por Johnny Tam 28.08.2017 / 07:03

2 respostas

2

O script a seguir rastreia todos os arquivos no diretório em que o script é executado e aplica comandos a ele, um por um. É isso que você quer?

#! /bin/sh
for file in *
do
   if [[ -f "$file"  ]]; then
      # process the file with name in "$file" here
   fi
done

Você pode renomear um arquivo conforme solicitado, usando a seguinte instrução dentro do loop acima:

mv "$file"  "$(echo" $file" | sed -n "s|^\(.*\)\(\.[0-9a-zA-Z]*\)$|_su|p")"

Coloca o sufixo "_su" na frente do sufixo de extensão de arquivo, mas no final do nome do arquivo. Se os arquivos não tiverem extensão, ele colocará o sufixo no final do nome do arquivo.

    
por 28.08.2017 / 07:40
0
  1. Colete os comandos em um script (veja abaixo)
  2. Anexe um sufixo ao nome de arquivo fornecido na linha de comando do script e use-o como o nome do arquivo de saída.
#!/bin/sh

for name in "$@"; do
    some_utility "$name" >"$name.suffix"
done

"$@" expandirá para a lista das coisas que você tem na linha de comando. Por exemplo, com

$ ./script.sh a b "hello world" 123

A variável $name obterá os valores a , b , hello world e 123 em iterações consecutivas do loop. Você passaria seus arquivos de entrada dessa maneira, ou como

$ ./script.sh input*.txt

que daria todos os arquivos correspondentes ao padrão fornecido no diretório atual.

A variável $name pode então ser usada como o nome de cada arquivo de entrada e você pode adicionar um sufixo ao nome simplesmente marcando-o no final desse valor (e usar isso como o nome de um arquivo de saída, por exemplo).

Substitua a linha dentro do loop por algo que faça o processamento real do arquivo $name .

O script precisa ser executado para ser executado com ./script.sh . Você faz isso com chmod +x script.sh .

    
por 28.08.2017 / 08:31