
С помощью команды file мне нужно проверить множество файлов, если они имеют формат ASCII или другой.
Иногда я получаю из файла команду:
file1: ASCII English text
И иногда я получаю другой ответ от команды file
file2: Non-ISO extended-ASCII English text, with very long lines
Я действительно не уверен, есть ли другие ответы с другим синтаксисом.
Мой вопрос:
Я пишу следующий синтаксис ksh, чтобы проверить, является ли файл ASCII, но я не уверен, что
Следующий синтаксис является оптимальным для проверки формата ASCII?
[[ ` file $some_file | grep –c ASCII ` = 1 ]] && print "you have ascii file for sure"
Если у кого-то есть другие предложения по проверке формата ASCII наверняка!, я буду очень рад это увидеть.
решение1
if LC_ALL=C grep -q '[^[:print:][:space:]]' file; then
echo "file contains non-ascii characters"
else
echo "file contains ascii characters only"
fi
решение2
Как насчет...
if file -ib "$file" | grep -Eqs '^text/plain(;|$)'; then
echo "It's text/plain."
fi
Я не знаю, насколько это распространено --mime-type
; если это стандарт, используйте
if file -b --mime-type "$file" | grep -qs '^text/plain$'; then
Альтернативно grep -qs '^text/'
для любого типа текста.
решение3
Поскольку вы анализируете вывод с помощью кода, я бы предложил использовать опцию -i
on file
, чтобы он выводилMIMEтипы вместо понятных человеку строк. Вывод типа MIME более регулярен, и это немного упрощает работу с ним в коде.
Что касается типов выходных данных, посмотрите нафайл человекаГоворит, что:
/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.
Просмотрите эти файлы на предмет всех типов MIME, которые он может сообщить, чтобы определить, какие типы будут вам интересны при анализе вывода из file
. Я подозреваю, что вас будет интересовать только то, что тип MIME начинается с text/
.