重命名/删除目录中的空格

问题描述 投票:1回答:1

Linux的新手,但发现Linux中名称空间中有'不喜欢'的字眼。

通过使用:rename 's/ /_/g' *,它通过添加_underscore而不是空格来重命名该目录中的所有内容。因此,“ test dir nr 1变为“ test_dir_nr_1”,“ test file 1.txt”变为“ test_file_1.txt”]

但是!无论如何,有没有办法使其自动化和递归(这是对的词吗?)也在子目录中做子目录?

linux bash directory batch-rename removing-whitespace
1个回答
0
投票

使用GNU find

find . -name "* *" \( -type f -o -type d \) -execdir rename -v 's/ /_/g' {} +

这会使用您当前的目录(.)作为起始目录来搜索名称中包含空格字符的常规文件和目录,并以递归方式重命名它们。我刚刚添加了-v erbose标志,因此您可以看到发生了什么。

要列出该命令将影响的文件和目录,请删除-execdir部分:

find . -name "* *" \( -type f -o -type d \)

您当然可以用绝对或相对路径替换.

© www.soinside.com 2019 - 2024. All rights reserved.