用正则表达式重命名文件名

| 我的文件夹中有一组文件(
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 / \'     

要回复问题请先登录注册