所以我有一堆文件名,如Zubko_141_i00_sed.dat
和Zubko_135_i00_sed.dat
。我的目标是仅删除其中一个零,并完全替换文件名,因此我最终得到了新的文件名,如:Zubko_141_i0_sed.dat
。有sed
或其他正则表达式命令可以快速执行此操作吗?
答案 0 :(得分:3)
这就是你想要的吗?
$ var="Zubko_141_i00_sed.dat"
$ echo "${var/00/0}"
Zubko_141_i0_sed.dat
用sed表示:
$ echo "$var" | sed 's/00/0/'
Zubko_141_i0_sed.dat
但很难相信你无法解决这个问题,所以我猜你确实需要别的东西 - 如果是这样的话,请编辑你的问题以澄清。
鉴于您下面更新的问题和评论,也许您想要:
for file in *; do mv "$file" "${file/00/0}"; done
答案 1 :(得分:1)
<强> file.txt的:强>
Zubko_141_i00_sed.dat
Zubko_135_i00_sed.dat
试试这个:
sed -r 's/_i00_/_i0_/' file.txt
<强>输出:强>
Zubko_141_i0_sed.dat
Zubko_135_i0_sed.dat