我正在尝试编写一个 BASH 脚本,一旦将 SD 卡插入读卡器就会自动安装它,然后将所有图片移动到 HDD 中的文件夹中,并将每个文件重命名为拍摄图片的日期和时间。
有什么想法可以实现吗?我正在使用没有 GUI 的 Ubuntu 12.04,谢谢 :)
答案1
只是为了为您提供完整的答案:
自动挂载并复制数据
高级方法(你应该怎么做)
您将需要使用UDEV 规则特定于唯一唯一标识符您的设备(请原谅我上述类型的 udid)。
懒惰的方法(你可以怎么做)
运行CRON 作业以指定的时间间隔执行脚本。显然,在执行其余操作之前,您需要脚本验证 SD 卡是否已插入和/或已安装。
重命名/移动
获取 EXIF 数据
$ identify -verbose imageFile.jpg
这会产生很多好东西,所以假设您想要从中获得创建日期 - 让我们将其过滤掉:
$ identify -verbose imageFile.jpg | awk '/exif:/'
(或 grep exif)
更新:
OP 在评论中请求另一种方法:
您要求嵌套文件夹,例如 2012 年 11 月 20 日将是 ~/2012/11/20/*.jpg's
这是我为尝试此操作而编写的脚本,它现在可与 EXIF 配合使用(初始项目基于创建日期,当您移动或复制文件时,该日期会浮动)。它托管在我的空白网站上,我也会发布屏幕截图(因为在这里对其进行格式化需要付出很多努力)。 图像处理
我建议你在实施之前先进行有限的测试。我输入了命令行参数进行测试,所以我将 ~/Pictures 改为 ~/Documents(尽管它更喜欢完整路径)
答案2
以下是对 Ubuntu 中强大安装触发器的答案:https://help.ubuntu.com/community/UsbDriveDoSomethingHowto
只需输入脚本即可移动照片。例如:
/bin/bash #!/bin/bash # # 目标文件如 ../20121115-174656-originalname 源=/mnt/sdcard/ 目的地= / home /您的帐户/照片/ cd $源 对于 i 在 `find.-maxdepth 1-type f-printf";%f\n"`;中执行 iinfo =`stat -c%y $ i | cut -c1-19` idate=`date --date="$iinfo" +%Y%m%d-%H%M%S-` echo mv $i $destination$idate$i 完毕