我在文件夹
中有一组文件(ABC.AM.*.*.20*.*
)
例如:ABC.AM.00.13.201106.00014
,我需要将其重命名为ABC.AM.00.13.201106.01014
。我在AIX中,因此无法使用重命名命令。
只是一个伪脚本
for i in `ls ABC.AM.*.*.20*.*`
do
mv $i DESIRED_file_name
done
非常感谢任何帮助
答案 0 :(得分:2)
试试这个:
for arg in ABC.AM.*.*.20*.*
do
newarg="$(echo "$arg" | sed 's/\(.*\..\)0\(.*\)/\11\2/')"
if [ "$newarg" != "" ];then
mv "$arg" "$newarg"
fi
done
答案 1 :(得分:0)
目前尚不清楚您想要制作的替代品究竟是什么,但对于您提供的具体示例,您可以这样做:
for ...; do mv $i ${i/00014/01014} done
这类事情的常用技巧是使用sed生成新文件名:
for old_name in ...; do new_name=$( echo $old_name | sed -e '...' ) mv $old_name $new_name done
当做这种事情时,最好用'echo'替换'mv'并确保你有你想要的替换,然后使用'mv'重新运行命令。
在您的情况下,您可能希望使用以下内容:
sed -e 's/000\([0-9]\{2\}\)$/010\1/'