如何解决用正则表达式重命名文件名
| 我的文件夹中有一组文件(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
任何帮助将不胜感激
解决方法
尝试这个:
for arg in ABC.AM.*.*.20*.*
do
newarg=\"$(echo \"$arg\" | sed \'s/\\(.*\\..\\)0\\(.*\\)/\\11\\2/\')\"
if [ \"$newarg\" != \"\" ];then
mv \"$arg\" \"$newarg\"
fi
done
, 目前尚不清楚您想要替代什么,但是对于您给出的特定示例,您可以执行以下操作:
为了...;做
mv $ i $ {i / 00014/01014}
做完了
这种事情的常用技术是使用sed生成新的文件名:
用于...中的old_name;做
new_name = $(echo $ old_name | sed -e \'... \')
mv $ old_name $ new_name
做完了
在执行此类操作时,最好将\'mv \'替换为\'echo \',并确保您拥有所需的替换项,然后使用\'mv \'重新运行命令。
在您的情况下,您可能想要使用类似以下的内容:
sed -e \'s / 000 \\([0-9] \\ {2 \\} \\)$ / 010 \\ 1 / \'
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。