如何在Linux中重命名文件和目录
重命名文件是您在Linux系统上经常需要执行的最基本的任务之一。 您可以使用GUI文件管理器或通过命令行终端来重命名文件。
重命名单个文件很容易,但是一次重命名多个文件可能是一个挑战,特别是对于Linux新手而言。
在本教程中,我们将向您展示如何使用 mv
和 rename
命令来重命名文件和目录。
使用重命名文件 mv
命令#
的 mv
命令(缺少移动)用于将文件重命名或从一个位置移动到另一位置。 的语法 mv
命令如下:
mv [OPTIONS] source destination
的 source
可以是一个或多个文件或目录, destination
可以是单个文件或目录。
- 如果您将多个文件指定为
source
,destination
必须是目录。 在这种情况下,source
文件被移动到目标目录。 - 如果您将一个文件指定为
source
和destination
目标是现有目录,然后将文件移动到指定目录。 - 要重命名文件,您需要将一个文件指定为
source
和一个文件作为destination
目标。
例如,重命名文件 file1.txt
如 file2.txt
您将运行:
mv file1.txt file2.txt
使用重命名多个文件 mv
命令#
的 mv
该命令一次只能重命名一个文件,但可以与其他命令(例如, find
或在bash内 for
要么 while
循环重命名多个文件。
以下示例显示了如何使用Bash for循环重命名所有对象 .html
通过更改当前目录中的文件 .html
扩展到 .php
。
for f in *.html; do
mv -- "$f" "${f%.html}.php"
done
让我们逐行分析代码:
- 第一行创建一个
for
循环遍历所有文件.html
。 - 第二行适用于列表的每一项,并将文件移至新的列表
.html
与.php
。 那个部分${file%.html}
正在使用shell参数扩展删除.html
文件名的一部分。 done
指示循环段的结尾。
这是一个使用示例 mv
与…结合 find
实现与以上相同:
find . -depth -name "*.html" -exec sh -c 'f="{}"; mv -- "$f" "${f%.html}.php"' ;
的 find
命令传递所有以结尾的文件 .html
在当前目录中 mv
一一使用 -exec
选项。 字符串 {}
是当前正在处理的文件的名称。
从上面的示例中可以看到,使用 mv
命令不是一件容易的事,因为它需要对Bash脚本有充分的了解。
使用重命名文件 rename
命令#
的 rename
命令用于重命名多个文件。 该命令比 mv
因为它需要一些正则表达式的基础知识。
有两个版本 rename
使用不同语法的命令。 在本教程中,我们将使用Perl版本的 rename
命令。 如果您的系统上未安装此版本,则可以使用发行版的程序包管理器轻松安装它。
安装
rename
在Ubuntu和Debian上sudo apt install rename
安装
rename
在CentOS和Fedora上sudo yum install prename
安装
rename
在Arch Linux上yay perl-rename ## or yaourt -S perl-rename
的语法 rename
命令如下:
rename [OPTIONS] perlexpr files
的 rename
命令将重命名 files
根据指定 perlexpr
正则表达式。 您可以在此处阅读有关perl正则表达式的更多信息。
以下示例将更改所有带有扩展名的文件 .html
至 .php
:
rename 's/.html/.php/' *.html
您可以使用 -n
选项打印要重命名的文件的名称,而不重命名它们。
rename -n 's/.html/.php/' *.html
输出将如下所示:
rename(file-90.html, file-90.php)
rename(file-91.html, file-91.php)
rename(file-92.html, file-92.php)
rename(file-93.html, file-93.php)
rename(file-94.html, file-94.php)
默认情况下, rename
该命令不会覆盖现有文件。 通过 -f
允许覆盖现有文件的选项:
rename -f 's/.html/.php/' *.html
以下是一些有关如何使用 rename
命令:
用下划线替换文件名中的空格
rename 'y/ /_/' *
将文件名转换为小写
rename 'y/A-Z/a-z/' *
将文件名转换为大写
rename 'y/a-z/A-Z/' *
结论#
我们已经向您展示了如何使用 mv
和 rename
命令来重命名文件。
还有其他命令可以在Linux中重命名文件,例如 mmv
。 受到命令行威胁的新Linux用户可以使用GUI批处理重命名工具,例如Métamorphose。
如果您有任何疑问或反馈,请随时发表评论。
重命名MV终端