Linux命令递归地用目录名称中的-(破折号)替换空格?

标签 linux replace find command batch-rename

如何在 Linux 中使用命令行将目录名中的空格替换为 -(破折号)?

注意:有数百个目录,每个目录都有子目录。

我尝试了以下命令,但它返回一条消息'call: rename from to files...'并且所有名称仍未更改。

find /home/jjj/ddd -name "* *" -type d | rename 's/ /-/g'

我想将“目录名称”更改为“目录名称”。

最佳答案

您可以尝试使用 shell 而不是重命名

find /home/jjj/ddd -depth -name "* *" -type d -print0 | while read -d $'\0' dir; do mv -v "$dir" "${dir// /-}"; done

added -depth to make it proper as per requirement.

关于Linux命令递归地用目录名称中的-(破折号)替换空格?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35526367/

相关文章:

c - 在 Linux 内核中实现正确的模块间同步

linux - -su : syntax error near unexpected token `<' when edit mapred-site. xml

php - 用元素替换每个字符

javascript - 正则表达式中的括号未被替换

c++ - 不确定如何解决 'std::out_of_range' 错误

c++ - 从反向迭代器获取 vector 中的索引

linux - Bash 字符串中特殊字符 '<' 的问题?

linux - 使用 'ls' 与选项和文件夹并获取完整路径

javascript - 正则表达式中的 encodeURIComponent

python - 如何从 numpy 二维数组中找到大于特殊数字的元素索引?