Я пытаюсь написать скрипт bash, который просматривает каталог, полный файлов, и классифицирует их как открытый текст или двоичный файл. Файл является открытым текстом, если он содержит только символы открытого текста, в противном случае он является двоичным. До сих пор я пробовал следующие перестановки grep:
#!/bin/bash
FILES=`ls`
for i in $FILES
do
########GREP SYNTAX###########
if grep -qv -e[:cntrl:] $i
########/GREP SYNTAX##########
then
mv $i $i-plaintext.txt
else
mv $i $i-binary.txt
fi
done
В строке синтаксиса grep я также попробовал то же самое без флага -v и замены ветвей операторов if, а также обеих комбинаций с [: alnum:] и [: print:]. Все шесть из этих вариантов создают некоторые файлы, помеченные как двоичные, которые состоят исключительно из текстового текста, и некоторые файлы, помеченные как открытый текст, которые содержат по крайней мере один непечатаемый символ.
Мне нужно найти способ определить файлы, которые только содержат печатаемые символы, то есть A-Z, a-z, 0-9, знаки пунктуации, пробелы и новые строки. Все файлы, содержащие любой символ, который не входит в этот набор, должны классифицироваться как двоичные.
Я бился головой о стену, пытаясь разобраться в этом на полдня.
Помогите!
Заранее спасибо,
Rik