如何从大量文件中删除文件名的特定部分

Tje*_*ard 3 files batch-rename

我有一个来自 Windows 电脑的旧备份,但大多数文件末尾都有时间戳。所有文件都需要保留其原始名称,但没有时间戳。

如何(2019_04_12 11_03_06 UTC)从多个文件夹中的所有文件中删除特定部分。

示例文件:

messages (2019_04_12 11_03_06 UTC).properties
maintenancemode (2019_04_12 11_03_06 UTC).jar
Run Code Online (Sandbox Code Playgroud)

据我所知所有文件都有相同的时间戳

van*_*ium 7

perlrename命令很强大。它可以查找字符串模式并替换它们。如果您的文件具有类似的时间戳,则可以使用以下方法:

rename -n 's/\(2019.*?\)//' *
Run Code Online (Sandbox Code Playgroud)

这将删除所有看起来像 的字符串(2019...)。因此,如果某些文件具有不同的时间戳也没关系。

?通过附加.*(感谢 Steeldriver)使匹配变得非贪婪。因此,表达式将仅匹配第一次出现 之前的字符),而不是字符串中稍后可能出现的其他字符。

-n选项使命令仅显示将要执行的操作。重命名未有效完成。这允许您首先仔细检查输出,如果它显示该命令将执行您想要的操作,则重新运行它,而不选择-n实际继续重命名。

默认情况下可能未安装该工具。您可以使用以下命令安装它:

sudo apt install rename
Run Code Online (Sandbox Code Playgroud)