Verifique la validez de todos los archivos en una carpeta según el asunto

Verifique la validez de todos los archivos en una carpeta según el asunto

Tengo un proyecto con algunos archivos lua y bash. Quiero recorrer todos los archivos y, según el asunto, quiero ejecutar una verificación de validez.

Respuesta1

Puede usar findy awkpara verificar la primera línea (su awk debe admitir FNR, como lo hacen los awks POSIX) y agregar algunos patrones de búsqueda para encontrar (como excluir carpetas ocultas):

echo "check bash files ..."
find . -not -path '*/\.*' \
  -type f -exec awk 'FNR == 1 && /^#!.*sh/{print FILENAME}' {} + | \
  while IFS= read -r f; do 
    echo "checking $f ..."
    bash -n "$f"
done

Nota: utilícelo IFS=para evitar dividir nombres de archivos que contengan uno de los $IFS, por ejemplo:'a b'

información relacionada