【发布时间】:2012-04-27 09:05:51
【问题描述】:
我进行了彻底的研究,以找到/创建一个适用于我想要实现的目标的脚本。
我正在尝试使用 Bash 更改多个文件名。在这种类型中,我试图只删除连字符:
YachtRescueVO-041512.mpg
到
YachtRescueVO041512.mpg
但是,同一目录中有更多文件。我正在尝试删除连字符和日期:
6CO1-041512.mpg
到
6C01.mpg
我很确定我需要一个正则表达式来对其进行排序,因为还有其他文件命名约定,例如 6B1A、3TSE1、CO1、11TSE3、TS1 等。我意识到这将是一个冗长的脚本。如果您有空闲时间,我将非常感谢您的帮助。
【问题讨论】:
-
如何确定何时只删除连字符以及何时同时删除连字符和日期?
-
@idoperceive 你是真正发布我刚刚链接的问题的人。我在该问题上发布的答案正好解决了这个问题。它会在一个目录及其子目录中找到所有带有连字符的文件,并将它们全部重命名为没有连字符。
-
蒂姆,您的脚本运行良好。粘性部分是后半部分。 John 简明扼要地描述了我的问题 - 我无法编写可以区分两种命名约定的脚本。
-
如果你想不出规则,那么你写的程序也想不出规则。您必须知道哪些文件需要通过某种算法或启发式以哪种方式处理。如果您查看文件名,您能分辨出需要哪种类型的重命名吗?如果是这样,那么有一个算法......但你必须弄清楚它是什么并写下来。没人能猜到你。可能是“全部大写意味着删除连字符和日期;混合大小写意味着只需删除连字符'(当然忽略扩展名)。但是你必须知道,并且基于这些知识,你可以设计一种机制。