我有以下格式的文件
EnvName.Fullbkp.schema_10022012_0630_Part1.expd
EnvName.Fullbkp.schema_10022012_0630_Part2.expd
EnvName.Fullbkp.schema_10022012_0630_Part3.expd
EnvName.Fullbkp.schema_10022012_0630_Part4.expd
我想用下面的文件重命名
EnvName.Fullbkp.schema_22052013_1000_Part1.expd
EnvName.Fullbkp.schema_22052013_1000_Part2.expd
EnvName.Fullbkp.schema_22052013_1000_Part3.expd
EnvName.Fullbkp.schema_22052013_1000_Part4.expd
这意味着我只想用22052013_1000重命名10022012_0630 什么是用于重命名所有文件的命令和循环
答案 0 :(得分:1)
这可行:
rename 's/10022012_0630/22052013_1000/' EnvName.Fullbkp.schema_10022012_0630_Part*
鉴于具有EnvName.Fullbkp.schema_10022012_0630_Part*
模式的文件,它会10022012_0630
更改为22052013_1000
。
答案 1 :(得分:1)
for OLDNAME in EnvName.Fullbkp.schema_10022012_0630_Part*.expd; do
NEWNAME=`echo "$OLDNAME" | sed 's/10022012_0630/22052013_1000/'`
mv "$OLDNAME" "$NEWNAME"
done
答案 2 :(得分:1)
一种非常有效的方法,特别是如果你处理成千上万的文件是使用bash进行字符串替换并找到查找。这将避免许多无用的叉/ execve,并将过程计数降至最低:
for F in $(find /your/path/ -type f -name '*10022012_0630*'); do
mv $F ${F/10022012_0630/22052013_1000};
done