![Script Bash para encontrar o conteúdo do arquivo em um diretório e agregar valor](https://rvso.com/image/1490209/Script%20Bash%20para%20encontrar%20o%20conte%C3%BAdo%20do%20arquivo%20em%20um%20diret%C3%B3rio%20e%20agregar%20valor.png)
Eu tenho um diretório com um grande número de arquivos. Eu quero escrever um script bash para -
- Entre nesse diretório
- Descubra quais deles são scripts Perl (mas nenhum deles tem extensão .pl)
- Adicione uma linha no topo de cada linha (pretendo adicionar um novo shebang) Se não for um script Perl, não faça nada
Não consigo procurar os scripts Perl, tentei usar o grep, mas não obtive o comando adequado. Além disso, a terceira etapa também é onde estou preso.
Responder1
O máximo que você pode fazer para encontrar os arquivos perl é usar o próprio perl para julgar.perl-cretorna 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 defeituoso e retorna 0 quando o arquivo não é na verdade um código Perl, mas pode ser analisado sem erros como se fosse. Se você consegue conviver com esse risco, a essência dele pode ser esta:
for FILE in * ; do
if perl -c "$FILE" >/dev/null ; then
sed -i -e '1i#!/usr/bin/perl' "$FILE"
fi
done
Observação: assim que eu tocar nos arquivos de qualquer maneira, eu adicionaria a extensão .pl, a menos que haja algum motivo REALMENTE sério para ficar cego.