如何在 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