
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 -i
Option „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/
.