【问题标题】:Remove string from filename not working as expected从文件名中删除字符串未按预期工作
【发布时间】:2020-01-11 13:47:03
【问题描述】:

我正在尝试从一组文件中删除一些子字符串。这些文件具有以下名称

0_00008.obj
0_00009.obj
0_00010.obj
0_00011.obj

我希望他们成为

8.obj
9.obj
10.obj
11.obj

我试过像这样使用rename

rename '/s/0_0+//;' *.obj

但是什么都没有发生? 我检查了正则表达式字符串,看起来它可以正确匹配我想要删除的内容,所以我是否使用了错误的重命名?

【问题讨论】:

  • 0_00000.obj 存在吗?
  • 不,第一个是0_00001.obj
  • 哦,好吧,那么 Code Maniac 提供的answer 应该可以工作了。
  • 我使用的模式有什么问题?
  • 我不知道rename 的正则表达式引擎的细节,但使用像regex101.com 这样的正则表达式可视化工具会帮助你很多。对于初学者,您似乎正在尝试匹配正斜杠,但您的示例数据没有正斜杠。后面的分号也是如此。

标签: regex rename


【解决方案1】:

你可以使用这个模式

^[0_]*

Regex Demo

【讨论】:

  • 它也不起作用。我试过rename 's/^[0_]*//;' 0_000002.obj
  • @jjcasmar 您正在使用哪种正则表达式?还有为什么s 标志?如果您的输入跨行,则需要使用 m 标志
  • 我不明白 refex 风味是什么意思。我在archlinux 中使用rename perl 脚本。 s/... 是因为我在某些示例中发现了这样的情况(unix.stackexchange.com/questions/33279/…
猜你喜欢
  • 2019-06-22
  • 1970-01-01
  • 2012-10-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-15
  • 2015-02-22
相关资源
最近更新 更多