Rename

如何通過在文件名上添加目前日期來 mv/重命名多個文件

  • October 11, 2021

我需要在 Red Hat 上調整一個 bash 腳本,該腳本可以 mv/重命名多個文件並在它們的名稱上添加目前日期。例如,我在下面有大量文件:

P BSS4C.SASS.CCAC.I101010.P 211008

P BSS4C.SASS.CSVC.I102210.P 211008

(還有 28 個像這樣的文件,它們以PBSS4C. * 開頭並以 * .P211008 結尾

在這個文件中, P 211008 代表處理日期。我需要用文件名中的目前日期替換處理日期,並在文件名的開頭用T替換****P。

預期結果:

T BSS4C.SASS.CCAC.I101010.P 211011

T BSS4C.SASS.CSVC.I102210.P 211011

提前致謝。

如果您有權訪問perl-rename(通常rename在基於 Debian 的系統上呼叫),您可以執行以下操作:

rename -n "s/^P/T/; s/\.P211008$/\.P$(date +'%y%m%d')/" PBSS4C.*P211008

-n將導致rename只列印它會做的更改而不實際重命名任何內容。如果您確信它可以滿足您的要求,請再次執行它而不使用-n.

如果你沒有perl-rename,你可以這樣做:

date=$(date +'%y%m%d')
for i in PBSS4C.*P211008; do 
   newName=${i/P/T} 
   newName=${newName/.P211008/}
   echo mv -- "$i" "$newName."P"$date"; 
done

在這裡,一旦你執行它並確認它做了你想要的,再次執行它而不echo實際重命名文件。

引用自:https://unix.stackexchange.com/questions/672735