我一直在嘗試找到一種有效的方法來重命名大量檔案,方法是在 linux 的 bash shell 中洗掉檔案名的特定組件。檔案名如下:
DATA_X3.A2022086.40e50s.231.2022087023101.csv
我想完全洗掉倒數第二個元素,結果是:
DATA_X3.A2022086.40e50s.231.csv
我已經看到使用 perl-rename 的建議,這可能會處理這個問題(我不清楚),但是這個系統沒有 perl-rename 可用。(有 GNU bash 4.2,并從 util-linux 2.23 重命名)
uj5u.com熱心網友回復:
我喜歡對這樣的事情進行擴展的通配符和引數決議。
$: shopt -s extglob
$: n=DATA_X3.A2022086.40e50s.231.2022087023101.csv
$: echo ${n/. ([0-9]).csv/.csv}
DATA_X3.A2022086.40e50s.231.csv
所以 ...
for f in *.csv; do mv "$f" "${f/. ([0-9]).csv/.csv}"; done
這假定本地目錄中的所有檔案,并且沒有其他您不想重命名的具有類似格式的 CSV 檔案等。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/532831.html
標籤:重击改名
