perl +recursion重命名文件和目录

也许有人有工具脚本(perl或shell脚本)重命名文件名称或目录名称?

例如

该工具需要从文件读取如下:

more file /var Local exportlocal /etc data Data 
  1. 第一个字段$ 1 – 在此目录下search的目录名称

  2. 第二个字段 – 需要search的文件/目录的名称

  3. 第三个字段 – 需要重命名的新文件/目录的名称

真实的例子(在运行该工具之前)

  /var/tmp/Local 

真实的例子(在我们运行该工具之后)

  /var/tmp/exportlocal 

假定文件是空格分隔的(字段和换行符之间的制表符和/或空格结束每个logging),并且文件和目录名称不包含这些字符:

 #!/bin/sh while read -r branch oldname newname do find "$branch" -depth -name "$oldname" -exec sh -c 'mv "$1" "${1%/*}/$2"' _ {} "$newname" \; done < file-with-names 

编辑:

按如下所示更改find命令,为每个重命名的文件输出一条消息:

  find "$branch" -depth -name "$oldname" -exec sh -c 'mv "$1" "${1%/*}/$2"; echo "$1 was renamed to $2 under $3"' _ {} "$newname" "$branch" \;