如何在Linu中重命名文件和目录
重命名文件和目录是您经常需要在Linux系统上执行的最基本任务之一。重命名单个文件很简单,但一次重命名多个文件可能是一个挑战,特别是对于刚接触Linux的用户而言。您可以使用GUI文件管理器或命令行终端重命名文件。
在本教程中,我们将向您展示如何使用mv
和rename
命令重命名文件和目录。这其中包括使用mv命令重命名文件,mv命令重命名多个文件。安装rename命令在Fedora,Ubuntu,Debian,Arch,CentOS,Redhat的Linux发行版。使用rename命令重命名文件,将文件名转换为小写与大写。
使用mv命令重命名文件
mv
命令(移动时间短)用于将文件从一个位置重命名或移动到另一个位置。mv
命令的语法如下:
mv [OPTIONS] source destination
source
可以是一个或多个文件或目录,destination
可以是单个文件或目录。
- 如果指定多个文件
source
,则destination
必须是目录。在这种情况下,source
文件将移动到destination
目录。 - 如果将单个文件指定为
source
,并且destination
是目录,则该文件将移动到指定目录。 - 要重命名文件,您需要将单个文件指定为
source
,并将单个文件指定为destination
目标。
例如,将file1.txt
重命名为file2.txt
:
mv file1.txt file2.txt
使用mv命令重命名多个文件
mv
命令一次只能重命名一个文件,但它可以与其他命令一起使用,例如find
在bash for或while循环中重命名多个文件。
在以下示例中显示如何使用Bash for循环将重命名当前目录中的所有 .html
文件扩展名更改为.php
。
for f in *.html; do mv -- "$f" "${f%.html}.php"
done
让我们逐行分析代码:
- 第一行创建一个for循环并遍历一个包含所有
.html
文件的列表。 - 第二行将列表中的每个文件移动到一个新的目标并用
.php
替换.html
。${file%.html}
使用的是shell参数扩展.html
。 - done表示循环的结束。
我们也可以让mv
结合find
命令来实现与上面相同的功能。
find . -depth -name "*.html" -exec sh -c 'f="{}"; mv -- "$f" "${f%.html}.php"' \;
find
命令将所有当前目录下以.html
结尾的文件,一个接一个地传递给命令-exec
。字符串{}
是当前正在处理的文件名称。
从上面的示例中可以看出,使用mv
命令重命名多个文件并不是一件容易的事,因为它需要你很好地了解Bash脚本。
使用rename命令重命名文件
rename
命令用于重命名多个文件。rename命令相比mv
,你需要一些正则表达式的高级知识。
rename
命令有两个版本,语法不同。在本教程中,我们将使用rename
命令的perl版本。如果您的系统上未安装此版本,则可以使用发行版的软件包管理器安装该版本。
在Ubuntu和Debian上安装rename
sudo apt install rename
在CentOS和Fedora上安装prename
sudo yum install prename
linux-rename">在Arch Linux上安装rename
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。
以上是 如何在Linu中重命名文件和目录 的全部内容, 来源链接: utcz.com/z/506959.html