更改批次檔名?

更改批次檔名?

我有一個關於如何更改該 sac 檔案名稱的順序的問題。我的意思是我有這個命令,但我需要將其更改為第二個命令,並且這些命令應該在腳本上。此外,此變更必須使用列號來完成。

老的

2007.084.00.22.50.8930_2007.084.01.26.10.1430.GE.ISP..BHZ.D.SAC
2007.084.00.22.51.2930_2007.084.01.26.54.8430.GE.ISP..BHN.D.SAC
2007.084.00.25.42.9430_2007.084.01.27.59.2430.GE.ISP..BHE.D.SAC

新的

2007.084.01.26.10.1430_2007.084.00.22.50.8930.GE.ISP..BHZ.D.SAC
2007.084.01.26.54.8430_2007.084.00.22.51.2930.GE.ISP..BHN.D.SAC
2007.084.01.27.59.2430_2007.084.00.25.42.9430.GE.ISP..BHE.D.SAC

讓我寫下我嘗試以這種方式完成的程式碼(如果答案是這樣的話,這對我會更有幫助),我不知道如何繼續完成這個過程。

#!/bin/bash

for sacfile in *SAC
do

echo $sacfile
n2=`echo $sacfile | cut -c 24-45`
echo $n2

done 

答案1

假設它們是固定長度的檔案名,這應該可以工作。

#!/bin/bash

for sacfile in *SAC
do
    new_sacfile=${sacfile:23:22}_${sacfile:0:22}${sacfile:45}
    echo mv -v ${sacfile} ${new_sacfile}
done 

我們正在使用bash 內建的變數操作剪切檔案名稱並根據我們的需要重新排列。當你高興時,你可以刪除mv語句前面的回顯

相關內容