Linux
將子目錄中的多個文件重命名為其目錄名
我的桌面上有一個名為 Models 的文件夾。在該文件夾中,有帶有 jpeg 文件且不帶 .jpg 副檔名的命名文件夾。jpeg 文件名是隨機散列。我想使用 bash 腳本將這些 jpeg 文件批量重命名為具有增量的目錄名稱,並在每個文件上附加 .jpg 副檔名。
基本上是這樣的
楷模/
Alice/ a5ccB2ff3e ee420bc4a 2acee54dc ... Alex/ de33fa24c0 d1eaa48e0a ...
我想成為
楷模/
Alice/ Alice001.jpg Alice002.jpg Alice003.jpg ... Alex/ Alex001.jpg Alex002.jpg ...
根據您對問題的描述,我假設總數沒有。文件夾中的文件不超過 999。
這是一個簡單的 bash 腳本,在您的頂層目錄(即模型)中執行它:
#!/bin/bash for i in ./* do if [ -d "$i" ] then j=001 for k in "$i"/* do mv "$k" "$i"/"$i""$j".jpg j=${j#0} if [ ${j:0:1} -eq 0 ] then j=${j#0} fi (( j++ )) j=`printf '%03i' $j` done fi done
它將首先檢查模型中的每個文件,無論它是不是一個目錄
if [ -d "$i" ]
。然後對於此目錄中的每個文件,它將更改它們的名稱mv "$k" "$i"/"$i""$j".jpg
。和j=${j#0} if [ ${j:0:1} -eq 0 ] then j=${j#0} fi
上面的程式碼將從頭開始刪除所有零,這樣您就不會收到如下錯誤:
((: 008: value too great for base (error token is "008") printf: 008: invalid octal number
和
j=`printf '%03i' $j`
將使值
j
長為 3 位。