
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 -i
opción file
para 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/
.