Linux的新手,但发现Linux中名称空间中有'不喜欢'的字眼。
通过使用:rename 's/ /_/g' *
,它通过添加_underscore而不是空格来重命名该目录中的所有内容。因此,“ test dir nr 1变为“ test_dir_nr_1”,“ test file 1.txt”变为“ test_file_1.txt”]
但是!无论如何,有没有办法使其自动化和递归(这是对的词吗?)也在子目录中做子目录?
使用GNU find
:
find . -name "* *" \( -type f -o -type d \) -execdir rename -v 's/ /_/g' {} +
这会使用您当前的目录(.
)作为起始目录来搜索名称中包含空格字符的常规文件和目录,并以递归方式重命名它们。我刚刚添加了-v
erbose标志,因此您可以看到发生了什么。
要列出该命令将影响的文件和目录,请删除-execdir
部分:
find . -name "* *" \( -type f -o -type d \)
您当然可以用绝对或相对路径替换.
。