递归重命名/替换整个目录中文件中的空格

您所在的位置:网站首页 批量重命名不带空格 递归重命名/替换整个目录中文件中的空格

递归重命名/替换整个目录中文件中的空格

2024-07-04 14:29| 来源: 网络整理| 查看: 265

递归重命名/替换整个目录中文件中的空格

本教程的目的是展示如何重命名或替换多个文件中的空格的各种方法。 Linux 系统上的某些工具可能无法正确处理包含空格的文件,这会促使某些用户使用下划线等方式替换空格。操作没有空格的文件要容易得多,因为您不必每次都担心转义文件名。

在本教程中,您将了解如何在 Linux 中通过文件递归重命名/替换空格。这将包括重命名单个文件、整个目录以及目录的内容及其所有子目录的内容。

在本教程中您将学习:

如何重命名/替换单个文件中的空格

如何重命名/替换目录中所有文件的空格

如何递归重命名/替换所有文件上的空格

递归重命名/替换整个目录中文件中的空格示例

以下所有示例都将在 Linux 命令行上进行。打开终端并导航到包含要重命名的文件的目录,然后尝试以下一些命令来开始。

要将所有文件中的空格替换为下划线,Bash for 循环中的以下命令将完成这项工作。请注意,此命令不会触及子目录中的文件。

$ for f in *; do mv "$f" $(echo $f | tr ' ' '_'); done

要删除单个文件中的空格并用下划线替换它们的位置,可以使用以下命令:

$ myfile="some file.txt" ; mv "$myfile" $(echo $myfile | tr ' ' '_')

这里我们用我们想要重命名的文件名分配一个变量$myfile。这允许我们在后续命令中调用该变量两次。请务必取出上面示例中的 some file.txt 并将您自己的文件名放在其位置。

如果我们想完全删除空白,而不在其位置放置任何内容,该怎么办?在这种情况下,我们可以省略上面示例中的 tr 命令中的下划线并使用 -d 选项。

$ for f in *; do mv "$f" $(echo $f | tr -d ' '); done

要递归地用下划线替换文件名中的所有空格,我们可以使用 Linux find 命令。请注意,此命令将遍历所有子目录(无论多深),并更改包含任何空格的所有文件的名称。可以使用 -maxdepth 选项更改此行为。

$ find . -type f -name "* *" -exec bash -c 'mv "$0" "${0// /_}"' {} \;

如果您的 Linux 系统上安装了 rename 实用程序,则有一个非常简单的语法可以删除所有文件中的空格并将其替换为下划线:

$ rename 's/\s/_/g' ./*.*

另一种实用程序是 mmv,它通常不会默认安装在 Linux 上,但可以很好地完成这项工作。以下命令将删除所有空格并用下划线替换它们:

$ mmv '* *' '#1_#2'

注意您可能还对我们的如何在 Linux 上重命名多个文件的教程感兴趣,其中我们展示了更多批处理文件重命名的示例,以及如何安装rename 和 mmv 命令。

结束语

在本教程中,我们了解了如何删除 Linux 系统上文件中的空格。没有空格的文件更容易处理,因为它们与 Linux 上的更多工具兼容,并且我们在处理文件时不必记住转义文件名。无论您有几个还是几千个文件需要重命名,本教程中的命令都可以立即完成重命名任务。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3