【发布时间】:2018-12-31 05:13:31
【问题描述】:
在~/foo/ 目录中有一些文件/目录名称,我想使用 bash 脚本递归地替换它们。
我想将 目录 名称中每次出现的 space 替换为 .。此外,文件名称中每次出现space 到-。
我搜索了类似的问题,所有这些问题都使用命令find,但我找不到使用它的方法。
【问题讨论】:
标签: bash replace find filenames
在~/foo/ 目录中有一些文件/目录名称,我想使用 bash 脚本递归地替换它们。
我想将 目录 名称中每次出现的 space 替换为 .。此外,文件名称中每次出现space 到-。
我搜索了类似的问题,所有这些问题都使用命令find,但我找不到使用它的方法。
【问题讨论】:
标签: bash replace find filenames
要替换目录,你可以试试这个:
find ~/foo -type d -name "* *" -execdir perl-rename -v 's/ /./g' '{}' \+
对于文件:
find ~/foo -type f -name "* *" -exec perl-rename -v 's/ /-/g' '{}' \;
使用的选项:
-type [fd] 指定文件或目录。-name 仅匹配具有space 的目录/文件
-exec\-execdir 执行命令,在这种情况下,perl-rename
注意
取决于您的 S.O.你可以只使用rename 而不是perl-rename。
【讨论】: