[英]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.