云网牛站
所在位置:首页 > Linux命令 > 在Linux中重命名目录及使用mv、rename命令重命名多个目录

在Linux中重命名目录及使用mv、rename命令重命名多个目录

2020-07-22 10:03:09作者:吴析稿源:云网牛站

本文介绍如何在Linux中使用命令来重命名目录。重命名目录是您在Linux操作系统上经常需要执行的最基本的操作之一,您可以单击几下或使用命令行终端从GUI文件管理器重命名目录。

在Linux中重命名目录及使用mv、rename命令重命名多个目录

 

重命名目录

在Linux和类似Unix的操作系统中,可以使用mv命令将文件和目录从一个位置重命名或移动到另一位置。

用于移动目录的mv命令,语法如下:

mv [OPTIONS] source destination

参考:mv命令_Linux mv命令使用详解:用来对文件或目录重新命名

在使用方法,比如要将目录dir1重命名为dir2,可以运行:

mv dir1 dir2

重命名目录时,必须为mv命令指定好两个参数,第一个参数是目录的当前名称,第二个参数是新名称。

重要的是要注意,如果dir2已经存在,则dir1将移动到dir2目录。

要重命名不在当前工作目录中的目录,您需要指定绝对路径或相对路径:

mv /home/user/dir1 /home/user/dir2

 

重命名多个目录

重命名单个目录是一项简单的任务,但是一次重命名多个目录可能是一个挑战,特别是对于新Linux用户而言,更多的时候几乎不需要一次重命名多个目录。

1、用mv重命名多个目录

mv命令一次只能重命名一个文件,但是,它可以与其他命令(例如find等)结合使用,以一次重命名多个文件。

这是一个示例,显示了如何使用Bash for循环将当前日期附加到当前工作目录中所有目录的名称中:

for d in *; do 

 if [ -d "$d" ]; then

  mv -- "$d" "${d}_$(date +%Y%m%d)"

 fi

done

让我们逐行分析代码:

第一行创建一个循环并遍历所有文件的列表。

第二行检查文件是否为目录。

第三行将当前日期附加到每个目录。

这是结合使用mv和find的相同任务的解决方案:

find . -mindepth 1 -prune -type d -exec sh -c 'd="{}"; mv -- "$d" "${d}_$(date +%Y%m%d)"' \;

find命令使用-exec选项将所有目录一个一个地传递到mv,字符串{}是当前正在处理的目录的名称。参考find命令_Linux find命令使用详解:在指定目录下查找文件

从示例中可以看到,使用mv重命名多个目录不是一件容易的事,因为它需要对Bash脚本有充分的了解。

2、使用rename重命名多个目录

rename命令用于重命名多个文件和目录,该命令比mv更高级,因为它需要正则表达式的基本知识。

rename命令有两种版本,语法不同,我们将使用Perl版本的rename命令,根据给定的perl正则表达式重命名文件。参考rename命令_Linux rename命令使用详解:用字符串替换的方式批量改变文件名

下面的示例演示如何用下划线替换当前工作目录中所有目录的名称中的空格:

find . -mindepth 1 -prune -type d | rename 'y/ /_/'

为了安全起见,请传递-n选项以rename以打印要重命名的目录的名称,而不重命名它们。

这是另一个示例,显示了如何将目录名转换为小写:

find . -mindepth 1 -prune -type d | rename 'y/A-Z/a-z/'

 

相关主题

在Linux下一次重命名多个文件可以使用mmv命令及Thunar文件管理器

Linux命令子频道
精选文章
热门文章