我有一個bash腳本集,它在包含大量照片的文件夾中執行,並根據用戶輸入順序將它們拼接成全景圖。生成完成後,輸出文件將重命名爲$x-pano.jpg
,並將一個文件夾移到更高的位置。使用bash腳本重命名文件
我的問題是數字前綴是基於腳本的順序執行,這意味着根據腳本執行期間生成的全景圖的數量,所有文件都會被重命名爲1-pano.jpg
到n-pano.jpg
。
如何修改重命名過程以查看存儲文件夾並獲得最大的$x
?我想將該數字加1並用作文件的數字前綴。我目前的代碼是
//get the list of files in directory and sort in increasing order
$filelist=$(find ../ -maxdepth 1 -type f | sort -n)
//get number of files
$length=${filelist[@]}
//get the last file
$lastFile=${fileList[$((length-1))]}
將獲得文件列表,按升序排序並從列表中獲取最後一個文件。這是我卡住的地方。使用-
作爲分隔符,我如何獲取當前值?
在賦值的左側沒有美元符號。添加一組圓括號來創建數組:'filelist =($(find ../ -maxdepth 1 -type f | sort -n))'。要獲得計數:'length = $ {#filelist [@]}'。要獲得最後一個文件:'lastFile = $ {fileList [@]:-1}'(注意數組下標已經是一個算術上下文,所以不需要'$(())',但是直到Bash 4.2您可以使用負面下標,因此您必須在早期版本中使用負片)。 –