也许有人有可以重命名文件名或目录名的工具脚本(perl 或 shell 脚本)?
例如
该工具需要从文件中读取以下内容:
more file
/var Local exportlocal
/etc data Data
第一个字段 $1 – 在此目录下搜索的目录名称
第二个字段-需要搜索的文件/目录的名称
第三个字段-需要重命名的新文件/目录的名称
真实示例(运行工具之前)
/var/tmp/Local
真实示例(运行该工具后)
/var/tmp/exportlocal
答案1
假设文件是空格分隔的(字段之间有制表符和/或空格,每个记录以换行符结尾),并且文件和目录名称不包含这些字符:
#!/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" \;