Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 我只需要删除文件名中的一个重复字符-UNIX_Regex_Unix_Sed - Fatal编程技术网

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

Regex 我只需要删除文件名中的一个重复字符-UNIX,regex,unix,sed,Regex,Unix,Sed,所以我有很多文件名,比如Zubko_141_i00_sed.dat和Zubko_135_i00_sed.dat。我的目标是只去掉其中的一个零,并完全替换文件名,因此我最终使用了新的文件名,如:Zubko_141_i0_sed.dat。有没有一种使用sed或其他regex命令快速执行此操作的方法?这就是您要尝试的全部操作吗 $ var="Zubko_141_i00_sed.dat" $ echo "${var/00/0}" Zubko_141_i0_sed.dat 有了sed,它将是: $ ec

所以我有很多文件名,比如Zubko_141_i00_sed.dat和Zubko_135_i00_sed.dat。我的目标是只去掉其中的一个零,并完全替换文件名,因此我最终使用了新的文件名,如:Zubko_141_i0_sed.dat。有没有一种使用sed或其他regex命令快速执行此操作的方法?

这就是您要尝试的全部操作吗

$ 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

这就是你想要做的吗

$ 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
file.txt:

试试这个:

sed -r 's/_i00_/_i0_/' file.txt
输出:

file.txt:

试试这个:

sed -r 's/_i00_/_i0_/' file.txt
输出:


我需要完全替换大约330个文件的文件名,这些文件的名称与此相似,因此将每个文件设置为一个变量将被证明是乏味的。我需要完全替换大约330个文件的文件名,这些文件的名称与此相似,因此将每个文件设置为一个变量将被证明是乏味的。