verifica o arquivo ASCII com o comando file por shell scrript

4

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

    
por jennifer 26.10.2010 / 23:56

3 respostas

8

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

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.

    
por 27.10.2010 / 00:26
0

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/ .

    
por 27.10.2010 / 00:23