首页 > 解决方案 > 根据 Bash 中的模式更改目录名称

问题描述

我需要更改单行(最佳选项)目录名称,更精确 - 删除一些在开头 TO_BE_REMOVED_W._ 具有可变部分的前缀

我可以找到要修改的目录:

find ./ -type d -iname 'TO_BE_REMOVED_W*' -exec mv {} _____ \;

我应该如何形成执行部分来重命名目录以从全名中删除模式?

标签: bashsedfindone-liner

解决方案


大多数发行版都带有rename接受替换模式,所以我通常使用-execdirwith rename

例如,要删除PREFIX_

$ find . -execdir rename 's/^PREFIX_//' '{}' +

请注意,对于 Arch Linux,这被称为perl-renameArch 的默认rename值不是rename大多数发行版上的标准)。


推荐阅读