如何在Linux上使用bash脚本替换文件名中的空格?


考虑一下我的本地机器上的一个目录,它看起来像这样:

immukul@192 dir1 % ls -ltr
total 0
-rw-r--r-- 1 immukul staff 0 Jul 3 20:44 sample code.txt
-rw-r--r-- 1 immukul staff 0 Jul 3 20:44 sample code with love.txt

在名为dir1的上述目录中,存在两个.txt文件,这两个文件的文件名中都有空格,我们需要使用Linux上的bash脚本来替换这些空格。

为了实现我们的目标,我们首先必须知道我们可以通过Linux命令遍历文件并打印其名称,然后我们可以稍后修改该命令以将文件名中的空格替换为下划线,并获得所需输出。

要打印文件名中的空格,我们只需要在终端中键入以下命令:

for f in *.txt; do echo ${f}; done;

输出

immukul@192 dir1 % for f in *.txt; do echo ${f}; done;

sample code with love.txt
sample code.txt

现在,我们只需要修改第一个分号后的部分,以便我们可以用下划线替换空格。

该命令是:

for file in *.txt; do mv "$file" "${file// /_}"; done

在上面的命令中,我们正在迭代所有匹配.txt扩展名的文件,然后我们一次取一个文件,然后将其移动到一个新文件,以获取新名称,并且在这个新名称中,我们将文件名之间的空格替换为下划线。

输出

immukul@192 dir1 % ls -tlr
total 0
-rw-r--r-- 1 immukul staff 0 Jul 3 20:44 sample_code.txt
-rw-r--r-- 1 immukul staff 0 Jul 3 20:44 sample_code_with_love.txt

更好的方法是将命令放入bash脚本中,然后运行该bash脚本。

要创建bash脚本,请创建一个名为sample.sh的文件,然后赋予它所有权限以使其成为可执行文件。

touch sample.sh
chmod 777 sample.sh

现在将命令放入sample.sh文件中,并使用以下命令执行该文件:

./sample.sh

输出

immukul@192 dir1 % ls -tlr
total 0
-rw-r--r-- 1 immukul staff 0 Jul 3 20:44 sample_code.txt
-rw-r--r-- 1 immukul staff 0 Jul 3 20:44 sample_code_with_love.txt

更新于:2021年7月30日

522 次浏览

启动您的职业生涯

完成课程获得认证

开始
广告