通过Ubuntu命令行批量删除文件名中的空格

在使用Linux时,您可能会遇到一些实用程序和应用程序,这些实用程序和应用程序只能使用不包含任何空格的文件名。我们并非总是以“无空格”格式保存文件,因此可能需要寻找一种消除空格的解决方法完全使用文件名。这样,文件名将不包含空格,并且可以轻松地在所有应用程序中使用它们。

在本文中,我们将为您介绍两种通过Ubuntu命令行非常简单地从文件名中删除空格的方法。

我们已经在Ubuntu 18.04 LTS系统上运行了本文中提到的命令和过程。

方法1:通过“ for”循环中的mv命令

在这种方法中,我们将在for循环中使用Ubuntu mv命令,以便重命名目录中的所有文件/文件夹,以便删除所有空格。

通过应用程序启动器搜索或Ctrl + Alt + T快捷方式打开Ubuntu命令行终端。

这是示例文件夹中文件的外观;我使用ls命令列出了内容:

因此,所有文件名都不包含一个,而是每个包含两个空格。

这是我将在要重命名其文件的目录中使用的命令:

$ for oldname in *; do newname=`echo $oldname | sed -e 's/ //g'`; mv "$oldname" "$newname";

做完了

通过Ubuntu命令行批量删除文件名中的空格

当我再次列出目录的内容时,您可以看到所有文件名不再包含任何空格。

通过Ubuntu命令行批量删除文件名中的空格

方法2:使用bash脚本重命名文件

在此方法中,我们将使用bash脚本,该脚本使用mv命令,以便以删除所有空格的方式来重命名文件和文件夹名称。

打开终端应用程序,然后移至bin文件夹,如下所示:

$ cd ~bin

现在,在您喜欢的文本编辑器之一中打开一个新的脚本文件。我们将使用Nano编辑器来打开一个名为remove_spaces.sh的空脚本文件。

$ sudo nano remove_spaces.sh

在该空文件中,添加以下脚本:

#!/bin/bash
(
IFS=$'n'
for y in $(ls $1)
do
mv $1/`echo $y | sed 's/ /\ /g'` $1/`echo "$y" | sed 's/ /_/g'`
done
)

提示: 无需将整个脚本键入到您的bash文件中,而是可以从此处复制它并通过使用Ctrl + Shift + V或使用右键单击菜单中的“粘贴”选项粘贴到终端中。

这是您文件的外观:

在Linux Shell上删除文件名中空格的脚本

现在,通过Ctrl + X快捷方式退出文件,然后将文件保存在“保存修改后的缓冲区?”中,方法是输入Y,然后按Enter。

为了使此文件成为可执行脚本,请在终端中运行以下命令:

$ sudo chmod +x remove_spaces.sh

现在,您可以在任何文件夹中使用脚本了。

样本文件

当我在Downloads文件夹中的“ sample”目录上运行脚本时,我会看到文件名中的所有空格都已删除。您可以使用ls命令再次列出文件内容时看到结果:

使用脚本

因此,这是通过两种方式可以重命名文件,以便删除文件名中的所有空格。现在,您正在使用的任何应用程序都不会识别包含空格的文件名。

通过Ubuntu命令行批量删除文件名中的空格

Sidebar