【问题标题】:Bash rename files with underscoreBash 用下划线重命名文件
【发布时间】:2015-04-21 10:19:44
【问题描述】:

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

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

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

【问题讨论】:

标签: sed rename


【解决方案1】:

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

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

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

【讨论】:

  • rename -v "s/_[0-9]+//g" *
  • if [[ $file =~ [0-9] ]]; then rename -v "s/_[0-9]+//g" *; fi
  • 谢谢。所以 [0-9] 只替换第一个数字,而 + 递归查找任何数字
  • 是的,+ 重复上一个令牌一次或多次。
最近更新 更多