Rename - 用于在Linux中重命名多个文件的命令行工具

我们经常使用 “MV”命令来重命名 Linux的一个文件。然而,快速重命名多个文件或一组文件使得终端中的任务非常困难。 Linux附带称为 重命名一个非常强大的内置工具。 rename命令用来重命名多个或一组文件,重命名文件为小写,重命名文件为大写,并用perl表达式覆盖文件。 rename”命令 的Perl脚本的一部分,它驻留在“ /usr/bin/”中很多Linux发行版。 您可以运行,找出“ which”命令rename命令的位置。
$ which rename
/usr/bin/rename
rename命令的基本语法
rename 's/old-name/new-name/' files
rename命令带有与引导rename命令做实际工作的强制性 Perl表达式沿着几个可选参数。
rename [ -v ] [ -n ] [ -f ] perlexpr [ files ]
  1. -v:文件的打印名称更名成功。
  2. -n:显示哪些文件会被重新命名。
  3. -f:强制覆盖现有文件。
  4. perlexpr:Perl的表达。
为了更好地理解这个实用程序,我们在文章中讨论了这个命令的几个实例。

1.基本rename命令示例

假设你有一堆“ 的.html”扩展名的文件,并且你想一气呵成重命名所有的 “.html”添加文件“ 的.php”。 例如,首先做一个 “ls -l命令 ”,检查文件与 名“.html”扩展名列表。
# ravisaive@youcl:~$ ls -l
total 22532
-rw-rw-r-- 1 ravisaive ravisaive 6888896 Oct 10 12:10 cricket.html
-rw-rw-r-- 1 ravisaive ravisaive  588895 Oct 10 12:10 entertainment.html
-rw-rw-r-- 1 ravisaive ravisaive 6188895 Oct 10 12:10 health.html
-rw-rw-r-- 1 ravisaive ravisaive 6538895 Oct 10 12:10 lifestyle.html
-rw-rw-r-- 1 ravisaive ravisaive  938895 Oct 10 12:10 news.html
-rw-rw-r-- 1 ravisaive ravisaive  938937 Oct 10 12:11 photos.html
-rw-rw-r-- 1 ravisaive ravisaive  978137 Oct 10 12:11 sports.html
现在,你想改变所有这些文件的扩展名由 “.html”添加到“ 的.php”。 您可以使用下面的“rename”命令与 Perl表达式如下图所示。
ravisaive@youcl:~$ rename 's/\.html$/\.php/' *.html
:在上面的命令,我们使用两个参数。
  1. 第一个参数是一个Perl的表达.PHP 的.html代替。
  2. 第二个参数告诉rename命令来代替带*的.php的所有文件。
让我们来验证所有文件是否被重命名为“ 的.php”扩展名,上的提示做 ls -l命令
ravisaive@youcl:~$ ls -l
total 22532
-rw-rw-r-- 1 ravisaive ravisaive 6888896 Oct 10 12:10 cricket.php
-rw-rw-r-- 1 ravisaive ravisaive  588895 Oct 10 12:10 entertainment.php
-rw-rw-r-- 1 ravisaive ravisaive 6188895 Oct 10 12:10 health.php
-rw-rw-r-- 1 ravisaive ravisaive 6538895 Oct 10 12:10 lifestyle.php
-rw-rw-r-- 1 ravisaive ravisaive  938895 Oct 10 12:10 news.php
-rw-rw-r-- 1 ravisaive ravisaive  938937 Oct 10 12:11 photos.php
-rw-rw-r-- 1 ravisaive ravisaive  978137 Oct 10 12:11 sports.php
现在你可以在上面看到,所有的 HTML文件重命名为 PHP。

2.运行rename命令之前检查更改

虽然这样做严重或重大重命名的任务,你可以随时通过运行 rename  “-n”参数命令来检查变化。 在 “-n”参数会告诉你到底什么样的变化会发生,但更改不会真正完成。这里,是以下命令的示例。
ravisaive@youcl:~$ rename -n 's/\.php$/\.html/' *.php
cricket.php renamed as cricket.html
entertainment.php renamed as entertainment.html
health.php renamed as health.html
lifestyle.php renamed as lifestyle.html
news.php renamed as news.html
photos.php renamed as photos.html
sports.php renamed as sports.html
:以上命令的输出仅显示变化,但在现实的变化都没有做,除非你没有运行 “-n”开关命令。

3.打印rename输出

我们看到rename命令没有显示任何更改的信息。所以,如果你想获得rename命令的详细信息(如我们没有使用 “-n”选项),这里我们使用 “-v”选项来打印一份rename命令成功完成的所有更改的完整细节。
ravisaive@youcl:~$ rename -v 's/\.php$/\.html/' *.php
cricket.php renamed as cricket.html
entertainment.php renamed as entertainment.html
health.php renamed as health.html
lifestyle.php renamed as lifestyle.html
news.php renamed as news.html
photos.php renamed as photos.html
sports.php renamed as sports.html

4.将所有小写转换为大写和Vise-Versa

要批量重命名的所有文件与 小写名称为 大写。比如,我想从 的情况下隐蔽所有这些下列文件。
大写
ravisaive@youcl:~$ ls -l
total 22532
-rw-rw-r-- 1 ravisaive ravisaive 6888896 Oct 10 12:10 cricket.html
-rw-rw-r-- 1 ravisaive ravisaive  588895 Oct 10 12:10 entertainment.html
-rw-rw-r-- 1 ravisaive ravisaive 6188895 Oct 10 12:10 health.html
-rw-rw-r-- 1 ravisaive ravisaive 6538895 Oct 10 12:10 lifestyle.html
-rw-rw-r-- 1 ravisaive ravisaive  938895 Oct 10 12:10 news.html
-rw-rw-r-- 1 ravisaive ravisaive  938937 Oct 10 12:11 photos.html
-rw-rw-r-- 1 ravisaive ravisaive  978137 Oct 10 12:11 sports.html
只是,使用以下命令与perl表达式。
ravisaive@youcl:~$ rename 'y/a-z/A-Z/' *.html
一旦你执行上述命令,你可以通过执行 “ls -l命令 ”检查的变化。
ravisaive@youcl:~$ ls -l
total 22532
-rw-rw-r-- 1 ravisaive ravisaive 6888896 Oct 10 12:10 CRICKET.HTML
-rw-rw-r-- 1 ravisaive ravisaive  588895 Oct 10 12:10 ENTERTAINMENT.HTML
-rw-rw-r-- 1 ravisaive ravisaive 6188895 Oct 10 12:10 HEALTH.HTML
-rw-rw-r-- 1 ravisaive ravisaive 6538895 Oct 10 12:10 LIFESTYLE.HTML
-rw-rw-r-- 1 ravisaive ravisaive  938895 Oct 10 12:10 NEWS.HTML
-rw-rw-r-- 1 ravisaive ravisaive  938937 Oct 10 12:11 PHOTOS.HTML
-rw-rw-r-- 1 ravisaive ravisaive  978137 Oct 10 12:11 SPORTS.HTML
你可以看到,上面的命令实际上改名所有的小写的文件名(带有扩展 名为.html)为大写。
从上到下
同样的,你也可以将所有 大写字符使用以下命令为 小写
ravisaive@youcl:~$ rename 'y/A-Z/a-z/' *.HTML
ravisaive@youcl:~$ ls -l
total 22532
-rw-rw-r-- 1 ravisaive ravisaive 6888896 Oct 10 12:10 cricket.html
-rw-rw-r-- 1 ravisaive ravisaive  588895 Oct 10 12:10 entertainment.html
-rw-rw-r-- 1 ravisaive ravisaive 6188895 Oct 10 12:10 health.html
-rw-rw-r-- 1 ravisaive ravisaive 6538895 Oct 10 12:10 lifestyle.html
-rw-rw-r-- 1 ravisaive ravisaive  938895 Oct 10 12:10 news.html
-rw-rw-r-- 1 ravisaive ravisaive  938937 Oct 10 12:11 photos.html
-rw-rw-r-- 1 ravisaive ravisaive  978137 Oct 10 12:11 sports.html

5.覆盖现有文件

如果您想强行覆盖现有文件,请使用 “-f”选项,如下图所示。
ravisaive@youcl:~$ rename -f 's/a/b/' *.html
如果您想了解更多关于rename命令,请在终端 “rename”。 rename命令是非常有用的,如果你正在处理命令行文件的多个或批量重命名。做一个尝试,让我知道,多远有用的文件重命名。
赞(52) 打赏
未经允许不得转载:优客志 » 系统运维
分享到:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏