如何在 Linux Shell 上用下划线替换文件名中的空格

[ad_1]

在使用 Linux 时,您可能会遇到一些仅适用于不包含空格的文件名的实用程序和应用程序。 我们并不总是以这种“无空格”格式保存文件,并且可能必须寻找一种解决方法,将文件名中的空格替换为下划线字符“_”。 这样,您的文件名将不包含空格,您可以轻松地在所有应用程序中使用它们。

在本文中,我们将为您解释两种将文件名中的所有空格转换为下划线的方法,非常简单地通过命令行。

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

我将用作本文示例的“我的下载”文件夹包含所有文件名中的空格。

$ ls Downloads

我将使用此文件夹来解释如何将文件名转换为新格式。

方法一:通过单个 mv 命令

在这种方法中,我们将在 for 循环中使用 Ubuntu mv 命令来重命名给定目录中的所有文件/文件夹,以便名称中的所有空格都替换为下划线字符。

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

这是您将使用的命令的语法:

$ for file in *; do mv "$file" `echo $file | tr ' ' '_'` ; done

我运行了相同的命令在我的下载文件夹中用下划线替换空格:

当我再次列出目录的内容时,您可以看到所有文件名现在都包含下划线而不是空格。

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

在这个方法中,我们将使用 bash 使用 mv 命令以将所有空格替换为下划线的方式重命名文件和文件夹名称的脚本。

打开终端应用程序并移动到 bin 文件夹,如下所示:

$ cd ~bin

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

$ sudo nano replace_spaces.sh

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

#!/bin/bash

for f in *
do
  new="${f// /_}"
  if [ "$new" != "$f" ]
  then
    if [ -e "$new" ]
    then
      echo not renaming ""$f"" because ""$new"" already exists
    else
      echo moving "$f" to "$new"
    mv "$f" "$new"
  fi
fi
done

小费: 而不是将整个脚本输入你 bash 文件,您可以从此处复制它并使用 Ctrl+Shift+V 或使用右键单击菜单中的粘贴选项粘贴到终端中。

这是您的文件的样子:

如何在 Linux Shell 上用下划线替换文件名中的空格

现在,通过 Ctrl+X 快捷键退出文件并将文件保存在“Save 修改过的缓冲区?” 通过键入 Y 然后点击提示 Enter.

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

$ sudo chmod +x replace_spaces.sh

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

当我在示例下载文件夹中运行脚本时,我看到文件名中的所有空格都转换为下划线,如下所示:

运行外壳脚本

因此,这是您可以重命名文件的两种方法,以便将其名称中的所有空格都转换为下划线。 现在,您正在使用的任何应用程序都不会无法识别包含空格的文件名。

[ad_2]

Related Posts