Si por alguna razón tienes la necesidad de mostrar la codificación (encoding) de todos los archivos dentro de un directorio y subdirectorios, el comando find de Linux resulta de gran ayuda. Supongamos que deseas mostrar la codificación de todos los archivos .php dentro del directorio actual: $ find . -type f -name \\\*.php -exec file -i {} \\;

 A continuación explico cada uno de los parámetros utilizados:

  • El punto “.” hace referencia al directorio actual, si quisieras correr el comando sobre otro directorio tendrías que cambiar el punto por el directorio que desees.
  • -type f limita la búsqueda a sólo archivos, no directorios.
  • -name \*.php devuelve todos los archivos que terminan en .php
  • **-exec file -i {} \; **la opción -exec de find ejecuta el comando que se encuentra a continuación, en este caso es el comando file. -i es el parámetro de file que nos muestra tanto el tipo (mime type) del archivo como su codificación (encoding) y los corchetes {} hacen referencia a cada uno de los archivos encontrados. Por último \; sirve para que el comando se ejecute para cada uno de los archivos uno por uno.

Como vimos con este ejemplo, find tiene un alto potencial para ejecutar tareas que requieran navegar recursivamente en un directorio. Así como en este caso se utilizó file para mostrar los datos del archivo, la opción -exec puede servirnos para muchas otras tareas.