在Linux下重命名文件和目录

在Linux下重命名文件和目录

为什么以下命令“ find / -name '节点1'-print0 | xargs -0 rename 's/node1/node_STAR/'" 不替换 /var/tmp 目录下的 node1 吗?

我的目标是扫描 Linux 系统并重命名目录和文件

来自我的 Linux 机器的示例

pwd
/var/tmp/Change_host_dir
find  /  -name '*node1*'  -print0 | xargs -0
/var/tmp/Change_host_dir/node1
find  /  -name '*node1*'  -print0 | xargs -0 rename 's/node1/node_STAR/'
ls
node1

答案1

标准 Linuxrename命令手册页显示:

rename 将通过替换第一次出现的以他们的名义

所以它只是用于简单的文件重命名。这是来自 util-linux 的标准重命名,在我所知的所有 Linux 系统上都可用。

我认为你可能正在尝试使用 Larry Wall 的示例 perl 重命名脚本。如果这确实是您想要的,请在您的路径中创建此文件:

#!/usr/bin/perl
#
# rename script examples from lwall:
#       rename 's/\.orig$//' *.orig
#       rename 'y/A-Z/a-z/ unless /^Make/' *
#       rename '$_ .= ".bad"' *.f
#       rename 'print "$_: "; s/foo/bar/ if <stdin> =~ /^y/i' *

$op = shift;
for (@ARGV) {
    $was = $_;
    eval $op;
    die $@ if $@;
    rename($was,$_) unless $was eq $_;
}

使用 使其可执行chmod 755 rename,然后调用它而不是系统重命名。我用您的示例测试了它,它可以工作。

答案2

尝试

查找/-名称节点1-exec 重命名 blahblah {} \;

相关内容