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

重命名文件和目录是您经常需要在Linux系统上执行的最基本任务之一。重命名单个文件很简单,但一次重命名多个文件可能是一个挑战,特别是对于刚接触Linux的用户而言。您可以使用GUI文件管理器或命令行终端重命名文件。
在本教程中,我们将向您展示如何使用mv和rename命令重命名文件和目录。这其中包括使用mv命令重命名文件,mv命令重命名多个文件。安装rename命令在Fedora,Ubuntu,Debian,Arch,CentOS,Redhat的Linux发行版。使用rename命令重命名文件,将文件名转换为小写与大写。
使用mv命令重命名文件
mv命令(移动时间短)用于将文件从一个位置重命名或移动到另一个位置。mv命令的语法如下:
mv [OPTIONS] source destinationsource可以是一个或多个文件或目录,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 prenamelinux-rename">在Arch Linux上安装rename
yay perl-rename ## or yaourt -S perl-renamerename命令的语法如下:
rename [OPTIONS] perlexpr filesrename命令将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

