Script Bash para encontrar o conteúdo do arquivo em um diretório e agregar valor

0

Eu tenho um diretório com um grande número de arquivos. Eu quero escrever um script bash para -

  1. Insira esse diretório
  2. Descubra quais deles são scripts Perl (mas nenhum deles tem uma extensão .pl)
  3. Adicione uma linha no topo de cada linha (pretendo adicionar uma nova shebang) Se não for um script Perl, não faça nada

Não consigo pesquisar os scripts Perl, tentei usar o grep, mas não obtive o comando adequado. Além disso, o terceiro passo é também onde estou preso.

    
por Suraj Bhatia 15.04.2016 / 10:12

1 resposta

0

O máximo que você pode fazer para encontrar os arquivos perl é usar o próprio perl para julgar. perl -c retorna um código de saída diferente de zero se o arquivo não for um código perl correto, o que é definitivamente verdadeiro para a maioria dos arquivos que não são perl. Infelizmente, ele faz o mesmo quando é alimentado com código perl com defeito e retorna 0 quando o arquivo não é realmente um código perl, mas pode ser analisado sem erro como se fosse. Se você pode viver com esse risco, o núcleo disso pode ser este:

for FILE in * ; do
   if perl -c "$FILE" >/dev/null ; then
      sed -i -e '1i#!/usr/bin/perl' "$FILE"
   fi
done

Observação: uma vez que eu toque os arquivos de qualquer maneira, eu adicionaria a extensão .pl, a menos que haja algum motivo REALMENTE sério para ser cego.

    
por 15.04.2016 / 13:24