verificar el archivo ASCII con el comando de archivo mediante script de shell

verificar el archivo ASCII con el comando de archivo mediante script de shell

Con el comando file necesito verificar muchos archivos si son ASCII u otro formato

A veces obtengo del comando de archivo:

  file1: ASCII English text

Y a veces obtengo una respuesta diferente del comando de archivo.

  file2: Non-ISO extended-ASCII English text, with very long lines

Realmente no estoy seguro de si hay otras respuestas con sintaxis diferente.

Mi pregunta es:

Escribo la siguiente sintaxis ksh para verificar si el archivo es ASCII pero no estoy seguro si

¿La siguiente sintaxis es la óptima para verificar el formato ASCII?

   [[ ` file  $some_file | grep –c ASCII ` = 1 ]] && print "you have ascii file for sure"

Si alguien tiene otra sugerencia para verificar el formato ASCII con seguridad, me alegrará mucho verla.

Respuesta1

if LC_ALL=C grep -q '[^[:print:][:space:]]' file; then
    echo "file contains non-ascii characters"
else
    echo "file contains ascii characters only"
fi

Respuesta2

Qué tal si...

if file -ib "$file" | grep -Eqs '^text/plain(;|$)'; then
    echo "It's text/plain."
fi

No sé qué tan común es --mime-type; si es estándar, use

if file -b --mime-type "$file" | grep -qs '^text/plain$'; then

Alternativamente grep -qs '^text/'para cualquier tipo de texto.

Respuesta3

Ya que estás analizando el resultado con código, te sugiero usar la -iopción filepara que genereMÍMICAtipos en lugar de cadenas amigables para los humanos. La salida de tipo MIME es más regular y eso hace que sea un poco más fácil de manejar en el código.

En cuanto a los tipos de salida, eche un vistazo aarchivo de hombredice que:

/usr/share/file/magic
    Default list of magic numbers

/usr/share/file/magic.mime
    Default list of magic numbers, used to output  mime types
    when the -i option is specified.

Eche un vistazo a esos archivos para conocer todos los tipos MIME que puede informar para determinar qué tipos le interesarán al analizar la salida file. Sospecho que lo único que le importará es que el tipo MIME comience con text/.

información relacionada