我使用 sed 或其他一些命令在 unix 目录中使用以下格式的文件。
Owner.Env.File_010513_1200_ver1.expdp
Owner.Env.File_010513_1200_ver2.expdp
Owner.Env.File_010513_1200_ver3.expdp
Owner.Env.File_010513_1200_ver4.expdp
我想按以下格式重命名这些文件
Owner.Env.File_100613_2300_ver1.expdp
Owner.Env.File_100613_2300_ver2.expdp
Owner.Env.File_100613_2300_ver3.expdp
Owner.Env.File_100613_2300_ver4.expdp
答案1
for file in Owner.Env.File_10513_1200_ver*.expdp; do
mv "$file" "${file/010513_1200/100613_2300}"
done
答案2
如果文件不是太多(几万个),那么这应该可以完成这项工作(随后检查ls Owner.Env.File_010513_1200_ver*.expdp
文件是否剩余,如果有则重复该命令):
rename File_010513_1200_ File_100613_2300_ Owner.Env.File_010513_1200_ver*.expdp
对于 GNU 来说,处理大量文件(以及具有奇怪名称的文件)的替代方案是:
find . -regex ".*/Owner.Env.File_010513_1200_ver[1-9][0-9]*.expdp" -print0 | \
xargs -0 rename File_010513_1200_ File_100613_2300_