さまざまな種類のファイルを含むフォルダがあります。.pdf、.jpg、.png、マイナーな争いなどですが、すべて拡張子と呼ばれています。.JPG。元の拡張子に名前を変更するにはどうすればよいですか?つまりPDF到着PDF、些細な口論到着些細な口論など。
以下のファイル形式を見つけることができます。
file 99.jpg
99.jpg: PDF document, version 1.3
これを行うために使用できるスクリプトまたはプログラムはありますか?
答え1
以下で見つけたMIMEタイプを使用できますfile
。
#! /usr/bin/env bash
for f in ./*.JPG; do
type=$(file -bi "$f")
type=${type%%;*}
base=${f%.*}
final=
case "$type" in
application/pdf) final="$base".pdf ;;
image/png) final="$base".png ;;
image/tiff) final="$base".tiff ;;
esac
if [ "$final" ]; then
printf '%s --> %s\n' "$f" "$final"
# mv -f "$f" "$final"
fi
done
case
必要に応じてより多くのタイプを追加できます(ただし、image/jpeg
JPEGファイルにはすでに正しい拡張子があるため省略されています)。変更を確認し、mv
結果に満足したら、その行のコメントを外してください。
答え2
ビルドコマンドいいえ実行してください。
mimetype
コマンド文字列のリストを生成し、次の方法で調整するために使用されます。牛に似た一種の栄養sed
~の変えるs
注文する:cd ~/messed/up/folder/ # go where the files are... mimetype -M --output-format 'mv "%f" "%f%m"' *.JPG | sed 's#\.[^./"]*/\([^./]*"\)$#\.\1#'
一部のファイル拡張子が少し見えすぎる場合ジェスチャー広大極-ish、(例:などの代わりに)次に、そして間に
.jpeg
必要.jpg
な数のコマンドを追加しますs
。たとえば、次のようになります。sed '
s
sed 's/jpeg"$/jpg"/;s#\.[^./"]*/\([^./]*"\)$#\.\1#'
出力が良くなったら、次のものを使用できます。牛に似た一種の栄養
sed
~の 評価するe
オプション。 (e
最後の項目の前に1つを追加するだけです'
。)全体の内容は次のとおりです。cd ~/messed/up/folder/ # go where the files are... mimetype -M --output-format 'mv "%f" "%f%m"' *.JPG | sed 's/jpeg"$/jpg"/;s#\.[^./"]*/\([^./]*"\)$#\.\1#e' ls # show results