Linux/Unix:重命名名称中有空格的目录
您需要使用mv 命令在 Linux 或类 Unix 操作系统上重命名文件或目录名称。使用 Linux 和 Unix shell,您需要使用 \ 字符(例如My\ Dir1)转义空格或使用引号(例如'My Folder1')重命名名称中有空格的目录或文件。让我们看看如何使用命令行选项重命名名称中有空格的目录。
教程详细信息 | |
---|---|
难度等级 | 简单的 |
Root 权限 | 不 |
要求 | Linux 或 Unix 终端 |
类别 | 文件管理 |
操作系统兼容性 | AIX • Alma • Alpine • Arch • BSD • Debian • Fedora • FreeBSD • HP-UX • Linux • macOS • Mint • NetBSD • OpenBSD • openSUSE • Pop!_OS • RHEL • Rocky • Stream • SUSE • Ubuntu • Unix • WSL |
预计阅读时间 | 4 分钟 |
使用空格重命名目录
Linux、macOS、*BSD 和类 Unix 操作系统下的mv 命令语法如下。
语法 # 1 – 使用单引号
将目录名称括在单引号 ( 'dir name') 中可保留引号内目录名称的文字值:
$ mv 'old name here' 'new dir name here'
打开终端并输入以下命令将“ My Personal Files”重命名为“Files”:
$ mv 'My Personal Files' Files
使用 ls 命令验证新更改,如下所示:
$ ls -l
传递-v以查看在尝试重命名目录或文件夹时执行的操作。例如:
$ mv -v 'My Birthday Party Old Pictures' BirthDayParty2022
以下是视觉确认:
renamed 'My Birthday Party Old Pictures' -> 'BirthDayParty2022'
语法 #2 – 使用转义字符
未加引号的反斜杠\是 shell 转义字符。它保留其后的下一个字符的字面值,但换行符除外:语法为:
mv old\ name\ here 'new\ dir\ name\ here'
打开终端并输入以下命令将“ My Personal Files”重命名为“Files”:
$ mv My\ Personal\ Files Files
$ ls -l
批量重命名目录中的空间
您需要使用 find 命令和rename 命令的组合。获取名称中带有空格的目录列表:
输出:
$ find . -name "* *" -type d
## OR
$ find . -name "* *" -type d -ls
./backups/hello-web-app/Book Files 6:18:18 ./backups/hello-web-app/Book Files 6:18:18/Intermediate Concepts ./backups/hello-web-app/Book Files 6:18:18/Hello Web App ./Test/This is a Test/Dir foo
或者
4457192 4 drwxrwxr-x 3 vivek vivek 4096 Sep 9 04:39 ./Test/This\ is\ a\ \ \ \ \ \ \ Test 4457193 4 drwxrwxr-x 2 vivek vivek 4096 Sep 9 04:39 ./Test/This\ is\ a\ \ \ \ \ \ \ Test/Dir\ \ \ \ \ foo 4457188 4 drwxrwxr-x 4 vivek vivek 4096 Sep 9 04:39 ./backups/hello-web-app/Book\ Files\ 6:18:18 4457189 4 drwxrwxr-x 2 vivek vivek 4096 Sep 9 04:39 ./backups/hello-web-app/Book\ Files\ 6:18:18/Intermediate\ Concepts 4457190 4 drwxrwxr-x 2 vivek vivek 4096 Sep 9 04:39 ./backups/hello-web-app/Book\ Files\ 6:18:18/Hello\ Web\ App
默认情况下,您的系统上可能未安装rename命令。因此,请使用Alpine Linux 上的apk 命令、 RHEL 等上的dnf 命令/ yum 命令、Debian、Ubuntu 等上的apt 命令/ apt-get 命令、SUSE/OpenSUSE 上的 zypper 命令、Arch Linux 上的 pacman 命令来安装rename。
$ rename -v 's/ /_/g' "INPUT DIR 1"
因此,最终语法是:
$ find . -name "* *" -type d -execdir rename -v 's/ /_/g' {} +
现在它看起来如下:
示例会话
这是我的 macOS Unix 的另一个输出:
图 01:Bash shell mv 命令:使用空格重命名文件
总结
简而言之,使用各种 Linux 和 Unix 命令时,任何包含空格的文件、目录或文件夹都必须用引号引起来或用 \ 字符转义。本页介绍了如何使用 mv 命令重命名名称中带有空格的目录。但是,其他 Linux、macOS、*BSD 和 Unix 命令的语法保持不变。例如:使用
带有空格的文件名是个坏主意。在 Linux/Unix 下,最好避免在文件和目录名称中使用空格。
$ cp 'my dir 1' /dest/
$ rsync 'foo bar dir1' user@box1:/dest/path/
推荐阅读
- mv 命令示例和用法
- 使用 man 命令阅读 mv 和 bash/ksh 手册页或将 --help 选项传递给 mv,如下所示:
$ man mv
$ mv --help - 参见GNU coreutils mv 帮助页面
- Unix 或 Linux 重命名名称中有空格的目录
- Linux 在 Shell 提示符下重命名多个文件
- 如何使用命令行在 Linux 中重命名多个文件夹