Linuxユーザーのために修正する必要がある誤った名前のスキャン/ファックスからの画像ファイルがたくさんあります。 * .jpgとラベル付けされたPNGファイルであるスキャンがたくさんあることがわかりました。 Windowsでは、Explorer/Officeが拡張機能を無視するため、これが問題になることはありませんでした。しかし、Linuxでは、Eye of GNOMEなどは、内容が拡張子と一致しないため、ファイルを開くことを拒否するだけになります。
誰かがこれを行うことができるツールまたはスクリプトの小さな部分について何か推奨事項がありますか?これを行うためのCプログラムを書くことはできますが、それは少しやり過ぎのようです。座って手動で名前を変更することはできません。何千もあります。
編集:file
コマンドがファイルの実際の内容を調べて、それが何であるかを表示するのがわかります。しかし、そこからの情報をどのように使用するかはよくわかりません。
画像ファイルのように見えるファイルを繰り返し処理し、file
を呼び出して実際のファイルを確認してから、適切な名前に変更します。
for f in *.{jpg,JPG,png,PNG,jpeg,JPEG}; do
type=$( file "$f" | grep -oP '\w+(?= image data)' )
case $type in
PNG) newext=png ;;
JPEG) newext=jpg ;;
*) echo "??? what is this: $f"; continue ;;
esac
ext=${f##*.} # remove everything up to and including the last dot
if [[ $ext != $newext ]]; then
# remove "echo" if you're satisfied it's working
echo mv "$f" "${f%.*}.$newext"
fi
done