Con el comando de archivo necesito verificar muchos archivos si son ASCII u otro formato
A veces me sale del comando de archivo:
file1: ASCII English text
Y a veces me sale diferente respuesta de comando de archivo
file2: Non-ISO extended-ASCII English text, with very long lines
Realmente no estoy seguro de si hay otras respuestas con diferente sintaxis
Mi pregunta es:
Escribo la siguiente sintaxis ksh para verificar si el archivo es un ASCII pero no estoy seguro de si
¿La siguiente sintaxis es la sintaxis ó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, estoy seguro de que
shell-script
jennifer
fuente
fuente
file
Es una suposición heurística y no una garantía, ¿verdad?yes | head -c $((2**20)) > blah; dd if=/dev/urandom bs=1 count=1024 >> blah; file blah
diceblah: ASCII text
aunque no lo sea.Respuestas:
fuente
LC_ALL=C
efectivogrep
para tratar[[:print:]]
como la clase de caracteres "ASCII imprimible". De lo contrario, significa "imprimible & lt; sea cual sea su configuración regional actual & gt;", que puede no ser ASCII. Por ejemplo, la mayoría de los cuadros de Linux están configurados con las configuraciones regionales UTF-8, en cuyo caso[[:print:]]
coincidiría con las secuencias de caracteres no ASCII que son caracteres imprimibles en UTF-8 válidos.name=value command
es la sintaxis para configurar temporalmente una variable de entorno, en este casoLC_ALL
, por un solo comando. Estableciendo locale aC
se asegura[[:print:]]
solo coincide con caracteres ASCII (y no con caracteres acentuados de su idioma).[[:print:]]
es[[:graph:] ]
no[[:graph:][:space:]]
.Qué tal si...
No se que tan comun es
--mime-type
; si es standard, usaAlternativamente
grep -qs '^text/'
para cualquier tipo de texto.fuente
Ya que está analizando la salida con el código, sugeriría usar el
-i
opción enfile
por lo que produce MÍMICA tipos en lugar de cuerdas amigables con los humanos. La salida de tipo MIME es más regular y eso hace que sea un poco más fácil tratar con el código.En cuanto a los tipos de salida, un vistazo a archivo de hombre dice que:
Eche un vistazo a esos archivos para todos los tipos MIME que puede informar para determinar qué tipos le importarán al analizar la salida
file
. Sospecho que todo lo que te importa es que el tipo MIME comienza context/
.fuente