Linux如何批量重命名文件? rename命令快速修改多个文件名的技巧

今天在整理照片的时候,突然发现手机里有一堆以“IMG_”开头的照片,而且时间戳全乱了。
等等,我突然想到可以用重命名命令来整理这些照片的文件名,并按照拍摄时间排序。
于是我打开电脑上的终端,输入rename命令,发现我的系统不支持Perl风格的正则表达式。
看来我需要先查一下资料,看看如何调整命令来适合我的系统。

如何批量重命名文件 rename命令实战应用

说实话,Rename用起来确实很方便。
Linux和macOS都可用,更改文件名是如此之快。
如果正则表达式使用得当,复杂的操作也能轻松完成。

我们先来说说版本。
Perl 版本非常棒,可以与正则表达式一起使用。
语法为:重命名文件列表'/旧字符串/新字符串/[选项]'。
推荐这个版本。
对于 Ubuntu/Debian 的朋友, sudo apt install rename 。
在 macOS 上使用 Brew 安装重命名。
安装后需要添加alias alias rename='perl-rename',否则不起作用。

接下来才是真正的战斗。
例如,如果要将一组 .txt 文件更改为 .md,可以使用单个命令行来执行此操作:rename 's/.txt$/\.md/' .txt。
这个 $ 锚定了字符串的结尾,明白吗?如果没有$,也许.txt.md也被改变了。

是否要删除文件名开头的 old_ ?重命名 's/^old_//g' 。
^ 是锚点的开始,g 是全局根,否则只修改第一个。
将空格替换为下划线,重命名 's/ /_/g' 。
这个g很重要,否则只会修改第一个空格。

统一文件名的大小写也很简单。
转换为小写并重命名“y/A-Z/a-z/”。
或者重命名 '$_=lc' 。
将“y/a-z/A-Z/”重命名为大写字母。
或者重命名 '$_=uc' 。

您还可以添加前缀和后缀。
.jpg 文件添加 photo_ 前缀,重命名 's/^/photo_/g' .jpg。
将.txt文件添加_backup后缀,并重命名为's/$/_backup/g'.txt。

最烦人的是号码改名。
例如,将 .png 文件更改为 img_01 .png 格式。
该命令如下所示:rename 'our$i=0; s/./sprintf("img_ d.png", $i++)/e' .png。
这里的e修饰符可以执行Perl表达式,而sprintf就是no-fill的东西。

注意安全操作。
使用 -n 选项先预览,否则后悔更改可能就太晚了。
例如, rename -n 's/.txt$/\.md/' .txt 会打印 rename(readme.txt,readme.md) 来查看是否正确。
先备份重要文件,不要急于全部编辑。
如果正确使用通配符,它​​们可以限制需要编辑的文件并减少错误。

有许多先进的技术。
必须正确使用正则表达式锚 ^ 和 $ 才能确保替换准确。
g修饰符允许全局替换,多个空格也可以完全更改。
Perl 表达式与 e 修饰符结合使用更加强大。

总而言之,重命名可以做很多事情:更改后缀、删除字符串、更改大小写、添加后缀和后缀以及重命名数字。
一旦掌握了软件,几十个文件几秒钟就可以完成,效率非常高。
使用-n进行预览,安全第一。

如何批量修改后缀名

上周 我尝试使用计算机的内置功能来更改文件扩展名。
在Windows系统中,我选择了多个文件。
右键单击并单击“重命名”。
然后顺利改成我想要的后缀。
非常实用。

但是后来发现有些文件修改后打不开。
别打扰。
由你决定。