重命名具有特定名称的所有文件

重命名具有特定名称的所有文件

我试图找到名称为“stringx”的某些文件,并将名称(但不是扩展名)替换为“stringy”。所以基本上对于 stringx.txt 和 stingx.cs,我想要 stringy.txt 和 stringy.cs。我尝试使用以下命令测试我的重命名命令正则表达式,但它没有返回结果:

rename -n 'stringx./s/\*$stringy./\/' stringx.*

我在 Centos 下运行 csh。我可以看到我的正则表达式可能不正确,但我看不到任何结果来验证这一点。我可以看到有一些名为 stringx.txt 的文件。具有以下内容:

find ./ -name 'stringx.*'

答案1

rename stringx stringy stringx.*

rename在典型的 Linux 系统上(至少)有两个实用程序被调用。 Debian 和派生发行版(包括 Ubuntu)附带一个 Perl 脚本,其语法为

rename 's/stringx/stringy/' stringx.*

在其他发行版上,包括CentOS,rename是来自util-linux,它的语法是我上面写的。该实用程序可以rename.ul在 Debian 及其衍生产品上以该名称使用。

如果您想在子目录中递归,假设您所说的 csh 指的是 tcsh(但实际上,请考虑进入 20 世纪 90 年代中期并切换到 zsh):

set globstar
rename stringx stringy stringx.* **/stringx.*

相关内容