if LC_ALL=C grep -q '[^[:print:][:space:]]' file; then
echo "file contains non-ascii characters"
else
echo "file contains ascii characters only"
fi
Com o comando file eu preciso verificar muitos arquivos se eles tiverem ASCII ou outro formato
Às vezes eu recebo do comando file:
file1: ASCII English text
E às vezes recebo uma resposta diferente do comando de arquivo
file2: Non-ISO extended-ASCII English text, with very long lines
Eu realmente não tenho certeza se existem outras respostas com sintaxe diferente
Minha pergunta é:
Eu escrevo a sintaxe follwing ksh para verificar se o arquivo é um ASCII, mas não tenho certeza se o
a sintaxe seguinte é a sintaxe ideal para verificar o formato ASCII?
[[ ' file $some_file | grep –c ASCII ' = 1 ]] && print "you have ascii file for sure"
Se alguém tiver outra sugestão para verificar o formato ASCII, com certeza, ficarei muito feliz em ver que
if LC_ALL=C grep -q '[^[:print:][:space:]]' file; then
echo "file contains non-ascii characters"
else
echo "file contains ascii characters only"
fi
Que tal ...
if file -ib "$file" | grep -Eqs '^text/plain(;|$)'; then
echo "It's text/plain."
fi
Eu não sei quão comum é --mime-type
; se for padrão, use
if file -b --mime-type "$file" | grep -qs '^text/plain$'; then
Como alternativa, grep -qs '^text/'
para qualquer tipo de texto.
Como você está analisando a saída com código, sugiro usar a opção -i
em file
, de modo que ela gere MIME digita strings amigáveis ao homem. A saída do tipo MIME é mais regular e isso torna um pouco mais fácil lidar com código.
Quanto aos tipos de saída, uma olhada no arquivo man diz 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.
Dê uma olhada nesses arquivos para todos os tipos MIME que ele pode relatar para determinar com quais tipos você se importará ao analisar a saída de file
. Eu suspeito que tudo o que você vai se importar é que o tipo MIME começa com text/
.
Tags shell-script