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

recursively rename files and replacing characters

在目录 ~/foo/ 中有一些 file/directory 名称,我想使用 bash 脚本递归替换它们。

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

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

要替换目录,您可以试试这个:

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 仅匹配 directories/files 与 space
  • -exec\-execdir 执行命令,在本例中,perl-rename

注意

取决于您的 S.O。您可以只使用 rename 而不是 perl-rename