我的 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”替換為您要處理的另一個檔案副檔名,然後重複。