ASCII-Datei mit Dateibefehl per Shell-Skript überprüfen

ASCII-Datei mit Dateibefehl per Shell-Skript überprüfen

Mit dem Dateibefehl muss ich viele Dateien überprüfen, ob sie ASCII oder ein anderes Format haben

Manchmal erhalte ich vom Dateibefehl:

  file1: ASCII English text

Und manchmal bekomme ich eine andere Antwort vom Dateibefehl

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

Ich bin wirklich nicht sicher, ob es andere Antworten mit anderer Syntax gibt

Meine Frage ist:

Ich schreibe die folgende KSH-Syntax, um zu überprüfen, ob die Datei ein ASCII ist, aber ich bin nicht sicher, ob die

Ist die folgende Syntax die optimale Syntax, um das ASCII-Format zu überprüfen?

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

Wenn jemand einen anderen Vorschlag hat, um das ASCII-Format sicher zu überprüfen, würde ich mich sehr darüber freuen.

Antwort1

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

Antwort2

Wie wäre es mit...

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

Ich weiß nicht, wie häufig es ist --mime-type. Wenn es Standard ist, verwenden Sie

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

Alternativ grep -qs '^text/'für jede beliebige Textart.

Antwort3

Da Sie die Ausgabe mit Code analysieren, würde ich vorschlagen, die -iOption „on“ zu verwenden file, damit sie ausgibtMIMETypen statt benutzerfreundlicher Zeichenfolgen. Die Ausgabe des MIME-Typs ist regelmäßiger und daher im Code etwas einfacher zu handhaben.

Was die Ausgabetypen betrifft, sieheman-Dateisagt, dass:

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

Sehen Sie sich diese Dateien für alle MIME-Typen an, die gemeldet werden können, um zu bestimmen, welche Typen für Sie beim Parsen der Ausgabe von von Bedeutung sind file. Ich vermute, für Sie ist nur wichtig, dass der MIME-Typ mit beginnt text/.

verwandte Informationen