Nützliche Alternative zum Dateibefehl

Nützliche Alternative zum Dateibefehl

Ich verwende die folgende Shell-Syntax (aus meiner vorherigen Frage, beantwortet von - phemient), um zu überprüfen, ob die Datei ASCII (Text) oder ein anderes

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

das Problem besteht darin, dass ich die Meldung „Datei enthält Nicht-ASCII-Zeichen“ (aus der Shell-Skriptsyntax) erhalte, auch wenn die Testdatei eine ASCII-Datei ist. Warum?

Ich teste die Datei auch mit dem Dateibefehl und das ist, was ich bekomme

file test_file 
Non-ISO extended-ASCII English text" its also ASCII file 

Meine Frage: Wie ändere ich die Shell-Syntax, um auch „englischen Text im erweiterten ASCII-Format, der nicht dem ISO-Standard entspricht“ zu unterstützen?

so erhalte ich vom Shell-Skript die Meldung „Datei enthält nur ASCII-Zeichen“

  remark the solution must be for Linux and solaris

Danke

Antwort1

Hallo, ich würde so etwas verwenden wie:

#!/bin/bash
if [[ `file -b $1` == "ASCII text" ]] ; then
   echo "file contains ascii characters only"
   else
     echo "file contains non-ascii characters"
fi

Sieht aus wie:

$ filetest.sh 1.txt  
file contains ascii characters only
$ filetest.sh PHOTOS/HPIM0532.jpg  
file contains non-ascii characters

verwandte Informationen