1. 程式人生 > >linux下批量重新命名檔案

linux下批量重新命名檔案

假設資料夾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"替換為無.