Renaming/removing 目录中的空格
Renaming/removing spaces in directories
对 Linux 很陌生,但发现 'dislike' 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' {} +
这将使用当前目录 (.
) 作为起始目录搜索名称中包含 space 字符的常规文件和目录,并递归地重命名它们。我刚刚添加了 -v
erbose 标志,这样您就可以看到会发生什么。
要列出受命令影响的文件和目录,删除 -execdir
部分:
find . -name "* *" \( -type f -o -type d \)
您当然可以将 .
替换为绝对或相对路径。
对 Linux 很陌生,但发现 'dislike' 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' {} +
这将使用当前目录 (.
) 作为起始目录搜索名称中包含 space 字符的常规文件和目录,并递归地重命名它们。我刚刚添加了 -v
erbose 标志,这样您就可以看到会发生什么。
要列出受命令影响的文件和目录,删除 -execdir
部分:
find . -name "* *" \( -type f -o -type d \)
您当然可以将 .
替换为绝对或相对路径。