我可以使用一些 shell 脚本的帮助,使用目录树的部分内容和现有文件名来重命名文件。
背景:文件命名约定来自无法修改的 Amcrest 安全摄像头。摄像头每天每分钟和每小时都会创建一个新文件夹。
jpeg 文件是使用分钟后的秒数创建的。
当前命名结构:
AMC0103W_93Sxxx/2017-02-07/001/jpg.14/02/29[M][0@0][0].jpg
其中 14 是小时,02 是分钟,29 是秒。
这是我想要的格式:
AMC0103W_93Sxxx/2017-02-07/140229.jpg
我的目标是设置一个crontab
每小时运行一次的作业,将这些重命名到新目录中,然后删除旧目录和文件。
答案1
Zanna,您的解决方案非常完美,谢谢。至于这些摄像头的安全问题,我同意您的观点,这也是我将它们存储在自己的内部 FTP 服务器上而不是使用这些不确定的云托管服务的原因。
您的脚本:
find AMC0103W_93Sxxx -type f | rename -n 's|(.*/)[^/]+/jpg/([^/]+)/([^/]+)/([^[]*)\[.*|$1$2$3$4.jpg|'
输出:
rename(AMC0103W_93Sxxx/2017-02-11/001/jpg/07/02/27[M][0@0][0].jpg, AMC0103W_93Sxxx/2017-02-11/070227.jpg)