cmd - 批量修改文件名前缀¶
linux系统中rename命令的用法,用来修改文件名、重命名文件,批量重命名文件。
linux rename命令有两个版本,一个C语言版本
,一个是Perl语言版本
的,判断方式为:
运行man rename
看到第一个行: - 看到RENAME(1) Linux Programmer’s Manual RENAME(1)
的是C语言版本; - 看到RENAME(1) Perl Programmers Reference Guide RENAME(1)
则是Perl版本的了。
::: tip 提示
两个版本的语法有所差别,这里介绍的是ubuntu 22.04用到的perl版本的。
:::
基本语法¶
s
表示替换操作原前缀
表示需要被替换的前缀新前缀
表示新的前缀*
表示所有文件
例如: rename 's/old_/new_/' *
这条命令将当前目录下所有以 old_ 开头的文件名的前缀替换成 new_
::: warning 注意
-
请注意,最好先在没有重要文件的测试目录中进行测试。因为 rename 命令执行后文件名更改是不可逆的。
-
可以在rename后面加上
-n
参数预先预览,而不直接修改,可以防止改错了。
:::
全部文件改成小写¶
结合find命令一起使用¶
文件名修改已有的前缀¶
find . -name "match-pattern*.jpg" | xargs rename 's/old-prefix-/new-prefix-/'
# 通过find命令查找符合条件的文件,再通过管道修改原来的前缀
文件名前加上前缀¶
find . -name "*.png" -exec rename -n 's/.\//.\/append-prefix-/' {} \;
# 通过find命令来查找符合png后缀的文件,再通过find的exec参数一一对应的执行rename命令追加前缀
# 去掉-n参数可以生效命名
OR
find . -name "*.png" -exec rename --nopath -n 's//append-prefix-/' {} \;
# 加上--nopath参数可以简化上面的正则表达式部分,nopath表示不匹配目录,只修改文件
以下是输出的结果: