我有一个文件列表,例如:
i60.st082313ea.jpg
i61.st51249c5e.jpg
i62.stef1fe5f2.jpg
我想通过将起始整数(例如 60、61、62)减一来重命名目录中的每个文件。
我已经使用如下内容在 shell 中完成了 svn 重命名:
for file in *.xml;
do svn mv $file `basename $file xml`json;
done;
但是当涉及到创建正则表达式并从文件的一部分中减去 1 时,我不知所措。值得一提的是,该文件可以在名称中的其他位置重复表达式 i[0-9]+
,因此它只需匹配前导字符串。
任何帮助/教程/链接将不胜感激。
最佳答案
for file in *.jpg; do
newfilename=`echo $file | awk -F '.' '{ OFS=".";print "i" substr($1,2,2)+1, $2, $3}'`
mv $file $newfilename
done;
注意仅当文件名与您的示例匹配时才有效(例如整数位于第二个和第三个位置,并且文件恰好有两个 .
)。
HTH
关于regex - Shell 脚本(用于移动文件的正则表达式),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7074605/