使用 bash 脚本用正则表达式重命名多个文件
Renaming multiple filex with regex using bash script
我需要重命名多个文件,删除名称的 refdate
和 .dta
。 refdate 每天都在变化,格式为 'yyyymmdd'
。文件名示例:
alerts_stock_out_level_2_20210415.dta.csv -> alerts_stock_out_level_2.csv
base_simulated_20210721.level2.dta.csv -> base_simulated.level2.csv
relation_product-deposit_no_cover_20210531.dta.csv -> relation_product-deposit_no_cover.csv
有什么方法可以在 bash 中用正则表达式做到这一点吗?
无需正则表达式,只需 bash
glob patterns and parameter expansion 即可:
shopt -s extglob # Make sure extended patterns are enabled
for file in *csv; do
# First remove the .dat
newname=${file/.dat}
# And rename the file after removing the _refdate part
mv "$file" "${newname/_+([0-9])}"
done
我需要重命名多个文件,删除名称的 refdate
和 .dta
。 refdate 每天都在变化,格式为 'yyyymmdd'
。文件名示例:
alerts_stock_out_level_2_20210415.dta.csv -> alerts_stock_out_level_2.csv base_simulated_20210721.level2.dta.csv -> base_simulated.level2.csv relation_product-deposit_no_cover_20210531.dta.csv -> relation_product-deposit_no_cover.csv
有什么方法可以在 bash 中用正则表达式做到这一点吗?
无需正则表达式,只需 bash
glob patterns and parameter expansion 即可:
shopt -s extglob # Make sure extended patterns are enabled
for file in *csv; do
# First remove the .dat
newname=${file/.dat}
# And rename the file after removing the _refdate part
mv "$file" "${newname/_+([0-9])}"
done