递归重命名文件并替换字符

时间:2018-07-23 17:11:15

标签: bash replace find filenames

在目录~/foo/中,我想使用bash脚本递归替换一些文件/目录名称。

我想将目录名称中每次出现的space替换为.。另外,文件名称中每次出现space-

我搜索了类似的问题,所有问题都使用命令find,但是我找不到使用它的方法。

1 个答案:

答案 0 :(得分:0)

要替换目录,您可以尝试以下操作:

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