Script Bash para encontrar el contenido del archivo en un directorio y agregar valor

Script Bash para encontrar el contenido del archivo en un directorio y agregar valor

Tengo un directorio con una gran cantidad de archivos. Quiero escribir un script bash para...

  1. Ingrese a ese directorio
  2. Descubra cuáles de ellos son scripts de Perl (pero ninguno tiene la extensión .pl)
  3. Agregue una línea en la parte superior de cada una de las líneas (tengo la intención de agregar un nuevo shebang) Si no es un script Perl, no haga nada

No puedo buscar los scripts de Perl, intenté usar grep pero no obtuve el comando adecuado. Además, el tercer paso es también donde estoy estancado.

Respuesta1

Lo máximo que puede hacer para encontrar los archivos Perl es utilizar el propio Perl para juzgar.Perl-cdevuelve un código de salida distinto de cero si el archivo no es un código Perl correcto, lo que definitivamente es cierto para la MAYORÍA de los archivos que no son Perl en absoluto. Desafortunadamente, hace lo mismo cuando se alimenta con un código Perl defectuoso y devuelve 0 cuando el archivo en realidad no es un código Perl pero se puede analizar sin errores como si lo fuera. Si puedes vivir con ese riesgo, la esencia del mismo puede ser la siguiente:

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

Observación: una vez que toque los archivos de todos modos, agregaría la extensión .pl, a menos que haya alguna razón REALMENTE seria para estar ciego.

información relacionada