
我有近 500 個目錄,其中充滿了名稱類似於 的文件e141107140847.pdf
,我需要將它們重命名為用戶友好的名稱,例如2014_11_SDUXS_0847.pdf
.我一直在嘗試使用 for 循環和 sed,但我不知所措,無法弄清楚如何將所有內容組合在一起。我也無法存取rename
這台機器(FreeBSD)上的命令。
映射如下:
e
— 垃圾字符,待刪除14
— 翻譯為SDUXS
.我有 36 種不同的映射需要處理。11
- 月07
— 天,待刪除14
— 年份,轉換為 4 位數字0847
— 位置代碼,保留。
答案1
因此,將其組合起來作為您的具體示例:
#!/bin/bash
filename='e141107140847.pdf'
echo Given file name ${filename} -
case ${filename:1:2} in
14)
mapping="SDUXS"
;;
*)
mapping="XXXXX"
;;
esac
month="${filename:3:2}"
year="20${filename:7:2}"
location="${filename:9:4}"
echo New filename - ${year}_${month}_${mapping}_${location}.pdf
似乎給出了您想要的結果。展開case..esac
所有映射的語句並用 a 括起來for filename in *.pdf
,您可以確認輸出;然後只需將其更改echo
為:
mv "$filename" "${year}_${month}_${mapping}_${location}.pdf"