2016-04-25 64 views
1

Linux bash,Centos。Linux:如何爲保留擴展名的文件添加後綴

如何爲保持擴展名的文件添加後綴? 我可以找到有關如何更改或添加擴展名的文件,但不知道如何添加後綴保持擴展名...

例如:如果我想添加'_thumb'後綴到所有圖像文件(。 jpg,.png,.gif,.JPEG)。

somefile.jpg - > somefile_thumb.jpg

編輯:如果可能的腳本可以被重新推出,並不會影響那些已經被重命名的文件。爲了添加更多的擴展名列表。

在此先感謝!

回答

4

您可以使用:

shopt -s nullglob 
for f in *.jpg *.png *.gif *.JPEG; do 
    [[ $f != *_thumb.* ]] && mv "$f" "${f%.*}_thumb.${f##*.}" 
done 
+0

非常感謝!它運行。 但是,還有一個疑問:如果我想重新啓動腳本,並且不想重命名之前已被重命名的那些文件? (例如,爲了添加一些擴展更多) – MikeBau

+0

檢查更新的答案。它會跳過下一次重命名相同的文件。 – anubhava

+1

非常好,謝謝。我認爲它現在更完整 – MikeBau

1

在一個微小的變化,你可以強制與發現去除僅延長:

mv "$file" "${file%.${file##*.}}_thumb.${file##*.}" 
0

「重命名」命令可能是你在尋找:

rename 's/^(.*)\.(png|jpg|gif|JPEG)$/$1_thumbnail.$2/' *.png *.jpg *.gif *.JPEG 

的解釋:

  • 引號中的第一個參數是指替代:「S /正則表達式,什麼對查找/替換字符串/」
  • 這個表達式每次它通過隨機字符串開始,以點按列出的擴展名的一個附加端文件名匹配
  • 包含在圓括號中的正則表達式部分將匹配的子字符串存儲到像替換字符串中使用的$ 1和$ 2這樣的變量中。
  • * .png * .jpg * .gif * .JPEG只是文件列表,星號通過shell擴展爲完整的文件列表。如果在目錄中只有圖像,則只能使用一個星號。
+0

雖然這段代碼可能會回答這個問題,但提供關於爲什麼和/或如何回答問題的附加背景將顯着提高其長期價值。請[編輯]你的答案,添加一些解釋。 – CodeMouse92

相關問題