linux下批量重新命名檔案
阿新 • • 發佈:2018-11-10
假設資料夾Data裡有幾個資料資料夾, 每個資料資料夾內有多個數據檔案,該檔名稱格式為: 2014.143.20.49.21.0000.YN.BAS.00.BHE.M.SAC
現想要將這些檔名稱改為BAS.E.SAC, 即取原檔名的幾列重新命名,方法如下:
#!/bin/bash #將資料檔案.SAC名改為'<sta>.[N/E/Z].SAC' cd ./Data for FILE in ./* do cd ./$FILE ls ls *.SAC | awk -F"." '{print "mv "$0" "$8"."$10"."$12}' | bash rename "s/BH//" * cd .. done
其中ls *.SAC | awk -F"." '{print "mv "$0" "$8"."$10"."$12}' | bash
ls 將檔名字尾為.SAC的檔案打印出來,再用awk命令.以"."為分隔符, '{}'是操作命令,打印出mv filename_old filename_new,交由bash執行.
例如 mv 2014.143.20.49.21.0000.YN.BAS.00.BHE.M.SAC BAS.BHE.SAC
接下來實現刪除每個名稱的''BH"字元;
rename "s/BH//" *
即將''BH"替換為無.