從檔案名稱中刪除“~”

從檔案名稱中刪除“~”

我的 NAS 上有一個有限的 bash shell,並且有很多~檔案名稱中包含該字元的檔案。例如,我有一個文件2018/10/example~1.jpg,我必須將其移動並重命名為allFiles/2018-10-example_1.jpg.

我必須將 替換~為,並在文件名中_添加路徑,-而不是使用。/

請你幫助我好嗎?

PS 僅限有.jpg//副檔名的.png文件.mov

答案1

我沒有 QNAP,但我相信它的外殼實際上是 BusyBox。這應該適用於 BusyBox 和 bash(儘管使用 bash,您還需要安裝 find+cut+awk):

假設年份目錄(即“2018”)和“allFiles”目錄位於同一級別,且該級別是 shell 中目前的工作目錄:

find . -name '*.jpg' | cut -c3- | awk '{ newname=$0; gsub(/~/, "_", newname); gsub(/\//, "-", newname); gsub(/^/, "allFiles/", newname); print "mv " $0 " " newname; }'

這將產生一組命令來移動所有 .jpg 檔案。首先檢查命令以確保它們是合理的。然後透過在上述命令末尾添加“| sh”來運行它們。

然後將上面的“*.jpg”替換為您要處理的另一個檔案副檔名,然後重複。

相關內容