我有以下一组文件
top_axi_256_wrapper_05.02.01.14.00_sample06.tgz
top_axi_128_wrapper_05.02.01.14.00_sample06.tgz
我想用替换05.02.01.14.00
部分05_02_01_14_00
。所以最终输出是以下重命名的文件
top_axi_256_wrapper_05_02_01_14_00_sample06.tgz
top_axi_128_wrapper_05_02_01_14_00_sample06.tgz
我的目录也可能包含以下类型的文件名。
a72_a_0.0.0_0.00.04_ac_dc.tgz
在这里,我希望将文件重命名为
a53_1c_256K_a_0_0_0_0_00_04_ac_dc.tgz
这个怎么做?
基本上,您要用下划线代替一个点,最后一个除外。
您可以为此使用bash的参数扩展:
for file in * ; do
replace_all=${file//./_}
newname=${replace_all%_*}.${replace_all##*_}
mv "$file" "$newname"
done
//./_
表示用下划线替换所有点%_*
表示删除最后一个下划线后的所有内容##*_
表示删除所有内容,直到最后一个下划线或者,您可以先保存扩展名,然后将其删除,用下划线替换所有点,然后重新添加扩展名。留给读者练习。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句