在Linux下重命名文件和目录

为什么下面的命令“find / -name'node1'-print0 | xargs -0 rename's / node1 / node_STAR /'”不能replace/ 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 

标准的linux rename手册页说:

重命名将重命名指定的文件,通过replace名称中的第一个

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

我想你可能正在尝试使用Larry Wall的perl重命名脚本 。 如果这是你真正想要的,在你的path中创build这个文件:

 #!/usr/bin/perl # # rename script examples from lwall: # rename 's/\.orig$//' *.orig # rename 'y/AZ/az/ 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 ,并调用它而不是系统重命名。 我用你的例子testing它,它的工作原理。

尝试

find / -name node1 -exec rename blahblah {} \;