用于缩短文件名的 Linux 脚本或程序

Gri*_*ckz 9 shell scripting bash rename

我在找到namemangler的 Linux 版本方面没有取得太大成功,我需要重命名 1000 个文件,以便它们在 Windows 上可读。

有谁知道可以做到这一点的Linux程序?

如果没有,那么脚本可能会起作用,因为我只需要将文件夹中的所有文件重命名为前 16 个字符。我怀疑脚本路线可能值得一试,但不确定从哪里开始。

小智 11

在 Debian、Ubuntu 和衍生产品上,如果您man rename在命令提示符下输入,您将获得重命名实用程序的手册页,该实用程序允许在重命名中使用任意类似于 Perl 的正则表达式命令。

例如,这会将当前目录中的所有文件缩短(通过截断)长度为 5:

rename 's/^(.{5}).*/$1/' *
Run Code Online (Sandbox Code Playgroud)

它的工作原理是捕获前五个字符,然后在替换中使用它,删除其余字符。

另一个示例是将文件名(无扩展名)缩短为五个字符,同时保留扩展名:

rename 's/^(.{5}).*(\..*)$/$1$2/' *
Run Code Online (Sandbox Code Playgroud)

它捕获两个组,第一个是前五个字符,第二个是扩展名。这将myCarefullyCraftedDocument.pdf变成myCar.pdf.

警告:小心使用它最好是在目录的副本上,或者首先进行备份。你被警告了!!至少,rename -n先使用,它会告诉你在不实际操作的情况下会做什么。