コンテンツが画像かグラフィックであるかに応じて画像ファイルを並べ替える:既存のソリューションを更新しますか?

コンテンツが画像かグラフィックであるかに応じて画像ファイルを並べ替える:既存のソリューションを更新しますか?

ファイルが存在するかどうかに応じて、ディレクトリ内のファイルをソートしたいと思います。写真(カメラ)とデザイングラフィック。存在するスタックオーバーフロー、より古いものがありますソリューション/概念証明画像の色範囲を比較します。ほぼそのままコピーしました:1

チェックカートゥーン.​​sh:

#!/bin/sh

IMAGE=$1
COLORS=$(convert $IMAGE -format %c histogram:info:- | wc -l)
WIDTH=$(identify $IMAGE | sed -r "s/.* ([0-9]+)x[0-9]+ .*/\1/")
HEIGHT=$(identify $IMAGE | sed -r 's/.* [0-9]+x([0-9]+) .*/\1/')
RATIO=$(echo $WIDTH $HEIGHT $COLORS | awk '{ print ($1 * $2)/$3;}')
echo $RATIO | awk '{ printf "%020.5f",$1 }' 

すべて選択.Sh:

#!/bin/sh

FILES=$(ls)
for FILE in $FILES; do
IsIMAGE=$(identify $FILE 2>&1 | grep " no decode delegate " | grep -o "no")
if [ "$IsIMAGE" = "no" ]; then continue; fi
IsIMAGE=$(identify $FILE 2>&1 | grep " Improper image header " | grep -o "Improper")
if [ "$IsIMAGE" = "Improper" ]; then continue; fi
echo $(CheckCartoon.sh $FILE) $FILE
done

一般的な出力:

00000000000002.16959 Burne_Jones_The_Doom_Fulfilled_1884_85.jpg
00000000047480.70000 Dürer-Hieronymus-im-Gehäus.jpg
00000000000016.03440 IMG_00000138.jpg
00000000000015.67780 IMG_00000143.jpg
00000000000014.37140 IMG_00000144.jpg
00000000000015.05500 IMG_00000145.jpg
00000000000011.79040 M2-GrandTurk1.jpg
00000000000013.05840 Real-01.jpg

私はこの解決策が欠点にもかかわらず興味深いと思います。これを探りたいです。

  • スクリプトを追加することはアイデアを表示するためのものにすぎないので、ベストプラクティスで更新してより安全で強力にしましょう。
  • これに基づいてファイルをコピーするために2つのディレクトリを作成します。 臨界点これはスクリプトで設定されるか、実行時にパラメータに設定されます。一般に、値が非常に低いということは、カメラの写真に似ていることを意味する必要があります(または少なくとも色の範囲が制限されたグラフィックではない)。したがって、しきい値を50に設定すると、1つの画像を除くすべての画像が ディレクトリ中一人が行きます。制度法

これを試すことについてのアドバイスを聞きたいです。


1. SOの回答は、編集者のバックティックミスのために困難に直面しています。そして太字の文字もありますか?ブロックの1つ内のマーカー。もちろん、誰もがそれを見つけたいのですが、初心者はそうではないかもしれません。

ベストアンサー1

使用している場合は、mkdir -pすでに存在しているディレクトリについての苦情はありません。上部に次のように入力してくださいCheckAll.sh

 mkdir -p graphics pictures

この行にはecho $(CheckCartoon.sh $FILE) $FILE計算結果とファイル名のみが表示されるため、さらに作業を行う必要があるため、次のように置き換えてください。

# store value
result=$(CheckCartoon.sh $FILE)
# do a string compare
if [[ $result < "00000000000050." ]]
then
    echo move "$FILE" to graphics $result
    mv "$FILE" graphics
else
    echo move "$FILE" to pictures $result
    mv "$FILE" pictures
fi

堅牢性については、最初からシェルスクリプトを使用しないでください。ただし、少なくとも追加のチェックを実行して、$resultスクリプトが有効な値を返すことを確認できます。

おすすめ記事