我只需要删除文件名中的一个重复字符 - UNIX

时间:2016-04-15 00:47:59

标签: regex unix sed

所以我有一堆文件名,如Zubko_141_i00_sed.datZubko_135_i00_sed.dat。我的目标是仅删除其中一个零,并完全替换文件名,因此我最终得到了新的文件名,如:Zubko_141_i0_sed.dat。有sed或其他正则表达式命令可以快速执行此操作吗?

2 个答案:

答案 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