使用目录路径重命名文件

使用目录路径重命名文件

我可以使用一些 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)

相关内容