繁体   English   中英

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

[英]Rename a file name with regex

我在一个文件夹中有一组文件( 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

目前尚不清楚您想要替换的确切内容,但对于您给出的特定示例,您可以执行以下操作:

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

在执行此类操作时,最好将 'mv' 替换为 'echo' 并确保您拥有所需的替换,然后使用 'mv' 重新运行命令。

在你的情况下,你可能想要使用类似的东西:

sed -e 's/000\([0-9]\{2\}\)$/010\1/'

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM