前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何在linux中重命名文件和目录

如何在linux中重命名文件和目录

作者头像
入门笔记
发布2022-06-02 18:01:27
3.8K0
发布2022-06-02 18:01:27
举报
文章被收录于专栏:入门小站

重命名文件和目录是你经常需要在Linux系统上执行的最基本任务之一。

重命名单个文件很简单,但一次重命名多个文件可能是一个挑战,特别是对于刚接触Linux的用户而言。你可以使用GUI文件管理器或命令行终端重命名文件。

在本教程中,我们将向你展示如何使用mvrename命令重命名文件和目录。

使用mv命令重命名文件

mv命令(移动时间短)用于将文件从一个位置重命名或移动到另一个位置。mv命令的语法如下:

代码语言:javascript
复制
mv [OPTIONS] source destination

source可以是一个或多个文件或目录,destination可以是单个文件或目录。

  • 如果指定多个文件source,则destination必须是目录。在这种情况下,source文件将移动到destination目录。
  • 如果将单个文件指定为source,并且destination目标是现有目录,则该文件将移动到指定目录。
  • 要重命名文件,你需要将单个文件指定为source,并将单个文件指定为destination目标。

例如,将file1.txt重命名为file2.txt

代码语言:javascript
复制
mv filetxt filetxt

使用mv命令重命名多个文件

mv命令一次只能重命名一个文件,但它可以与其他命令一起使用,例如find在bash for或while循环中重命名多个文件。

在以下示例中显示如何使用Bash for循环将重命名当前目录中的所有 .html文件扩展名更改为.php

代码语言:javascript
复制
for f in *.html; do 
    mv -- "$f" "${f%.html}.php"
done

让我们逐行分析代码:

  • 第一行创建一个for循环并遍历一个包含所有.html文件的列表。
  • 第二行将列表中的每个项目和文件移动到一个新的目标并用.php替换.html${file%.html}部分使用的是shell参数扩展.html从文件名中删除。
  • done表示循环段的结束。

我们也可以让mv结合find命令来实现与上面相同的功能。

代码语言:javascript
复制
find . -depth -name "*.html" -exec sh -c 'f="{}"; mv -- "$f" "${f%.html}.php"' \\;

find命令将所有当前目录下以.html结尾的文件,一个接一个地传递给命令-exec。字符串{}是当前正在处理的文件的名称。

从上面的示例中可以看出,使用mv命令重命名多个文件并不是一件容易的事,因为它需要你很好地了解Bash脚本。

使用rename命令重命名文件

rename命令用于重命名多个文件。此命令比mv需要正则表达式的一些更高级基本知识。

rename命令有两个版本,语法不同。在本教程中,我们将使用rename命令的perl版本。如果你的系统上未安装此版本,则可以使用发行版的软件包管理器轻松安装该版本。

在Ubuntu和Debian上安装重命名

代码语言:javascript
复制
sudo apt install rename

在CentOS和Fedora上安装重命名

代码语言:javascript
复制
sudo yum install prename

在Arch Linux上安装重命名

代码语言:javascript
复制
yay perl-rename ## or yaourt -S perl-rename

rename命令的语法如下:

代码语言:javascript
复制
rename [OPTIONS] perlexpr files

rename命令将files 多个文件根据指定的perlexpr正则表达式重命名所有文件 。你可以在这里阅读更多有关Perl的正则表达式的知识。

例如,下面的命令将更改与扩展名的文件.html.php

代码语言:javascript
复制
rename 's/.html/.php/' *.html

你可以使用-n参数打印要重命名的文件的名称,而不重命名文件,可以用来做简单的测试。

代码语言:javascript
复制
rename -n 's/.html/.php/' *.html

输出看起来像这样:

代码语言:javascript
复制
rename(file-html, file-php)
rename(file-html, file-php)
rename(file-html, file-php)
rename(file-html, file-php)
rename(file-html, file-php)

默认情况下,rename命令不会覆盖现有文件。传递-f参数以允许覆盖现有文件。

代码语言:javascript
复制
rename -f 's/.html/.php/' *.html

以下是一些如何使用rename命令的常见示例:

用下划线替换文件名中的空格

rename 'y/ /_/' *

将文件名转换为小写

代码语言:javascript
复制
rename 'y/A-Z/a-z/' *

将文件名转换为大写

代码语言:javascript
复制
rename 'y/a-z/A-Z/' *

至此你应该很好地理解如何使用mvrename命令重命名文件。当然,还有其他命令可以在Linux中重命名文件,例如mmv。对于新Linux用户可以使用GUI批量重命名工具,例如Metamorphose。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-12-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 入门小站 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 使用mv命令重命名文件
  • 使用mv命令重命名多个文件
  • 使用rename命令重命名文件
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档