Linux命令之rename

本文对比了Linux系统中util-linux工具集的rename命令与Perl版本的rename命令。Perl版rename支持复杂的Perl表达式,适用于批量文件重命名;而util-linux-rename则用于简单的字符串替换。文章还介绍了两个版本rename命令的具体用法。

一、引言

今天才知道Linux下的rename有两个版本,util-linux工具集的rename和Perl版本的rename,而两者的用法是明显不一样的,Perl版rename相对比较强大

二、对比

perl-rename

RENAME(1)                                                         Perl Programmers Reference Guide                                                        RENAME(1)



NAME
       rename - renames multiple files

SYNOPSIS
       rename [ -v ] [ -n ] [ -f ] perlexpr [ files ]

DESCRIPTION
       "rename" renames the filenames supplied according to the rule specified as the first argument.  The perlexpr argument is a Perl expression which is expected
       to modify the $_ string in Perl for at least some of the filenames specified.  If a given filename is not modified by the expression, it will not be
       renamed.  If no filenames are given on the command line, filenames will be read via standard input.

       For example, to rename all files matching "*.bak" to strip the extension, you might say

               rename 's/\.bak$//' *.bak

       To translate uppercase names to lower, you'd use

               rename 'y/A-Z/a-z/' *

OPTIONS
       -v, --verbose
               Verbose: print names of files successfully renamed.

       -n, --no-act
               No Action: show what files would have been renamed.

       -f, --force
               Force: overwrite existing files.

ENVIRONMENT
       No environment variables are used.

AUTHOR
       Larry Wall

SEE ALSO
       mv(1), perl(1)

DIAGNOSTICS
       If you give an invalid Perl expression you'll get a syntax error.

BUGS
       The original "rename" did not check for the existence of target filenames, so had to be used with care.  I hope I've fixed that (Robin Barker).



perl v5.18.2                                                                 2014-01-14                                                                   RENAME(1)

可以看到它的使用方法是 rename [ -v ] [ -n ] [ -f ] perlexpr [ files ] 支持perl正则表达式的,这就是它强大的原因

util-linux-rename

RENAME(1)                  Linux Programmer’s Manual                 RENAME(1)



NNAAMMEE
       rename - Rename files

SYNOPSIS
       rename from to file...
       rename -V

DESCRIPTION
       rename  will  rename  the specified files by replacing the first occurrence of from in their name by to.


       -V, --version
              Display version information and exit.


       For example, given the files
              foo1, ..., foo9, foo10, ..., foo278, the commands

              rename foo foo0 foo?
              rename foo foo0 foo??

       will turn them into foo001, ..., foo009, foo010, ..., foo278.

       And
              rename .htm .html *.htm

       will fix the extension of your html files.


SEE ALSO
       mmv(1), mv(1)

AVAILABILITY
       The rename command is part of the util-linux-ng package and  is  avail-
       able from ftp://ftp.kernel.org/pub/linux/utils/util-linux-ng/.



                                1 January 2000                       RENAME(1)

util-linux工具集中的rename的用法是 rename from to files 把文件名中的from改为to

### 如何使用 Linux `rename` 命令批量重命名文件 #### 安装 `rename` 对于未安装 `rename` 的系统,可以通过包管理器进行安装: ```bash sudo apt update && sudo apt install rename ``` 此命令更新软件源并安装 `rename` 工具[^2]。 #### 使用基本语法 `rename` 命令的基本形式如下: ```bash rename [选项] 'perl正则表达式' 文件... ``` 其中,“perl正则表达式”用来定义旧名称到新名称的转换规则;“文件...”表示要被重命名的一个或多个文件[^1]。 #### 替换单词或字符 如果想要替换文件名中的特定单词或字符,可以这样做: 假设有一系列 `.txt` 结尾的文件希望改为 `.log` 结尾,则执行下面指令: ```bash rename -v 's/\.txt$/\.log/' *.txt ``` 这里 `-v` 参数使得每次成功改名都显示出来。上述命令会将当前目录下的所有 .txt 文件扩展名变更为 .log[^4]。 #### 移除特殊字符(如空格) 针对文件中含有空格的情况,可通过以下方式去除这些不必要的空白符: ```bash rename 's/\s+//g' * ``` 这条语句的作用是从选定的所有文件的名字里删除所有的空格(\s+)[^3]。 #### 应用复杂模式匹配 为了实现更加复杂的重命名逻辑,可采用 Perl 正则表达式的强大功能来进行精确控制。例如,仅更改某些特定位置上的字符串: ```bash rename 's/^prefix_(.*)/$1_suffix/' prefix_* ``` 这将会把形如 `prefix_filename` 这样的名字变成 `filename_suffix` 形式[^5]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值