顯示文章

這裡允許您檢視這個會員的所有文章。請注意, 您只能看見您有權限閱讀的文章。


文章 - john0221

頁: [1]
1
Linux 討論版 / Re: 錯誤副檔名的修正
« 於: 2017-04-25 18:30 »
經過幾天的摸索,終於完成 ;D
回復原始的副檔名,順便將副檔名改為小寫

for f in *.*; do
type=`echo $(file "$f" | awk '{print $2}') | tr '[:upper:]' '[:lower:]'`
mv $f ${f%%.*}.$type
done

也可以
for f in *.*; do
type=`echo $(file "$f" | awk '{print $2}') | tr '[A-Z]' '[a-z]'`
mv $f ${f%%.*}.$type
done


${f%%.*}是空檔名,$type是副檔名
$(file "$f" | awk '{print $2}')是取出其屬性,影像格式屬性在第二欄
| tr '[A-Z]' '[a-z]是將大寫轉小寫

2
Linux 討論版 / Re: 錯誤副檔名的修正
« 於: 2017-04-13 12:38 »
抱歉,我是用mac系統,在終端機下使用
file檔案後,真的沒image data

3
Linux 討論版 / Re: 錯誤副檔名的修正
« 於: 2017-04-13 09:47 »
另外,以下是提供的code執行結果,我是不是那裡弄錯?

4
Linux 討論版 / Re: 錯誤副檔名的修正
« 於: 2017-04-13 09:27 »
感謝回覆~
type=$(file -0 -F" " "$f" | grep -aPo '\0\s*\K\S+') 這一行我研究不出來,grep後面這段看不懂
懇請dark兄解惑,謝謝~

5
Linux 討論版 / Re: 錯誤副檔名的修正
« 於: 2017-04-12 14:46 »
for f in *.{jpg,JPG,png,PNG,jpeg,JPEG}; do
    type=$(file -0 -F" " "$f" | grep -aPo '\0\s*\K\S+')
    mv "$f" "${f%%.*}.${type,,}" 
done

以上的code錯在哪裡呢?謝謝

6
Linux 討論版 / Re: 錯誤副檔名的修正
« 於: 2017-04-12 14:43 »
在本目錄執行,是不是改成如下?謝謝

find | grep -iE 'jpg$|jpeg$|png$|gif$' | while read f;do
   ans=$(file "$f")
   if [ "$(echo $ans | grep 'image data')" != "" ] ; then
      # 再 grep 一次避免意外
      newname2=$(echo $ans | awk '{print $2}' | grep -iE 'jpg$|jpeg$|png$|gif$')
      # 想全小寫
      #newname2=$(echo $newname2 | sed 's/[A-Z]/\l&/g')
   fi
   if [ "$newname2" != "" ] ; then
        mv "$f" "$(echo "$f" | sed 's/\.[a-zA-Z]\{1,4\}$//')'.'$newname2" && echo ok || echo 'the same'
   else
       echo "$f"
   fi
done

執行後提示find參數說明usage: find [-H | -L | -P] [-EXdsx] [-f path] path ... [expression]

7
Linux 討論版 / 錯誤副檔名的修正[已解決]
« 於: 2017-04-11 14:34 »
我的遇到的問題是,有5000張的圖檔,有jpg、png,但其中很多副檔名都亂了,如有些原是png檔卻用了jpg副檔名,有些原是jpgp檔卻用了png副檔名,但有些又是正確的。我想一次找出並還原本來的副檔名,參考了這個網站http://askubuntu.com/questions/631900/correct-file-extensions,但其指令有誤,grep參數-aPo有誤,grep的參數好像沒有P,懇求解惑,感謝

頁: [1]