Sed Bash使用下划线重命名文件

Sed Bash使用下划线重命名文件,sed,rename,Sed,Rename,我的文件名为CULT_2009_BARRIERS_EXP_Linear.dbf 并希望将其重命名为 CULT_barries_EXP_Linear.dbf。 这些文件有一个日期前缀,它总是不同的,显示它被捕获的时间。 我试图用正则表达式替换它们。我想测试字符串是否包含数字,然后重命名。我用过 if [[ $file =~ [0-9] ]]; then rename -v "s/[0-9]//g" * && rename -v s/[_]_/_/ *; 部分有效。

我的文件名为CULT_2009_BARRIERS_EXP_Linear.dbf
并希望将其重命名为 CULT_barries_EXP_Linear.dbf。 这些文件有一个日期前缀,它总是不同的,显示它被捕获的时间。 我试图用正则表达式替换它们。我想测试字符串是否包含数字,然后重命名。我用过

    if [[  $file =~ [0-9]   ]];  then rename -v "s/[0-9]//g" * && rename -v s/[_]_/_/ *;

部分有效。但我理想情况下希望有一个重命名命令,因为这是一个很好的实践

一个重命名命令就足够了。只需在实际存储
.def
文件的目录上运行以下命令

rename -v "s/_[0-9]+//g" *.dbf

[0-9]+
匹配一个或多个数字,
[0-9]
将匹配一个数字字符
+
将上一个标记重复一次或多次。

重命名-v“s/[0-9]+/g”*
如果[[$file=~[0-9]];然后重命名-v“s/[0-9]+//g”*;谢谢。因此,[0-9]只替换第一个数字,+递归查找任何数字。因此,
+
将上一个标记重复一次或多次。可能重复