我的文件集是根据 GMT 时区命名的。我使用以下步骤成功重命名并将所有文件转换为所需的时区。
1.此代码删除所有扩展名为 .gif 的文件rename "s/.gif//g" *
2.此代码转换并重命名所有文件 for f in *; do mv -v -- "$f" "$(date -d "$f" '+%Y%m%d%H%M')"; done
- 转换示例:
‘15Z29Aug2017’ -> ‘201708292030’
不幸的是,我必须再次使用以下方法为所有文件设置扩展名 .giffor f in *; do mv "$f" "$f.gif"; done
我究竟怎样才能通过在步骤2中编辑代码来跳过文件扩展名的删除操作?
步骤 2 取自:如何批量将文件夹名称从一种日期格式转换为另一种日期格式
答案1
您需要做的就是将其脱下.gif
并$f
放回去:
for f in *; do mv -v -- "$f" "$(date -d "${f%%.gif}" '+%Y%m%d%H%M')".gif; done
${f%%.gif}
接受变量f
并删除其中最后一次#
出现的(因此是两次).gif
,因此即使是像 这样的奇怪文件名也1.gif2.gif
只会被.gif
删除最后一次。这个惊人的功能被称为Bash 参数扩展当你用这个名字搜索时,你可以阅读有关其耀眼力量的所有信息,例如此 Bash 常见问题解答– 它的功能远不止于此!