我有一個資料夾,其中包含大量不同類型的文件,即.pdf,.jpg,.png,.tiff等等,但都以副檔名命名.JPG。我怎麼能用它們原來的副檔名重命名它們呢? IEpdf到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
產生命令字串列表,然後透過以下命令對其進行調整GNUsed
的代替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#'
一旦輸出看起來不錯,就可以使用GNU
sed
的 評價e
選項。 (只需在e
最後一個前面加上一個'
即可。)所以整個事情可能看起來像: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