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