ファイルでいっぱいのディレクトリを見て、それらをプレーンテキストまたはバイナリとして分類する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:] を組み合わせて同じことを試したりしました。これらの 6 つのバリエーションはすべて、プランテキストのみで構成されるバイナリ ラベルの付いたファイルと、少なくとも 1 つの印刷不可能な文字を含むプレーンテキストのラベルが付いたファイルを生成します。
印刷可能な文字、つまり A ~ Z、a ~ z、0 ~ 9、句読点、スペース、および改行のみを含むファイルを識別する方法を見つける必要があります。このセットにない文字を含むすべてのファイルは、バイナリとして分類する必要があります。
私はこれを整理しようとして半日壁に頭をぶつけていました。ヘルプ!前もってありがとう、リク