在Linux中通过find或perl重命名文件和目录

我需要扫描所有目录和文件ander /目录并重命名主机 – “node1”与文件名或目录名称中的“node_STAR”

有人可以有一个好主意怎么做,也许用find或perl(为了插入到我的shell脚本)任何方式,它必须非常快,尽pipe我们扫描所有的Linux目录和文件

示例文件

/var/tmp/node1 will be /var/tmp/node_STAR file 

例如 – 目录

  /etc/my_hosts/node1 will be /etc/my_hosts/node_STAR dir 

就像是:

 rename 's/node1/node_STAR/' `find /var/tmp /etc/my_hosts -name 'node1'` 

由于如果受影响文件的数量很大,因此通过find的反向调用来传递文件名可能会失败,所以最好使用xargs:

 find . -name '*node1*' -print0 | xargs -0 rename 's/node1/node_STAR/' 

该命令将从当前目录( . )开始,replace包含stringnode1所有文件和目录名称。 如果只想replace确切的文件名,请从find参数中删除星号,并将其限制为文件或目录,分别使用参数type -ftype -d