如何在Linux中重命名目录

时间:2020-03-05 15:27:28  来源:igfitidea点击:

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

本文介绍了如何使用命令行重命名目录。

重命名目录

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

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

mv [OPTIONS] source destination

例如,要将目录“ dir1”重命名为“ dir2”,可以运行:

mv dir1 dir2

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

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

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

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

重命名多个目录

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

几乎不需要一次重命名多个目录。

使用“ mv”重命名多个目录

“ mv”命令一次只能重命名一个文件。
但是,它可以与其他命令(例如“查找”)或者内部循环结合使用,以一次重命名多个文件。

这是一个示例,显示了如何使用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'。
字符串“ {}”是当前正在处理的目录的名称。

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

使用“重命名”重命名多个目录

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

“ rename”命令有两种版本,语法不同。
我们将使用Perl版本的“重命名”命令。
这些文件根据给定的perl正则表达式重命名。

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

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

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

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

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

总结

我们已经向我们展示了如何使用“ mv”命令来重命名目录。

重命名MV终端