Rename
如何通過在文件名上添加目前日期來 mv/重命名多個文件
我需要在 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
實際重命名文件。