7个版本
0.4.1 | 2023年9月23日 |
---|---|
0.4.0 | 2023年9月7日 |
0.2.2 | 2023年9月3日 |
0.2.0 | 2023年3月22日 |
0.1.3 | 2022年2月24日 |
#108 in 图像
每月下载量39次
23KB
339 行
exifmv
根据EXIF标签将图像移动到文件夹层次结构中。
目前层次结构是硬编码到工具中的,因为这符合我的需求。将来这应该由支持正则表达式等的人可读字符串进行配置。
现在内置的字符串是这样的
{目标}/{年份}/{月份}/{日期}/{文件名}.{扩展名}
例如,如果你有一个拍摄于2020年8月15日的名为Foo1234.ARW
的图像,它将最终位于如下文件夹层次结构中
2020
├── 08
│ ├── 15
│ │ ├── foo1234.arw
│ │ ├── …
安全性
使用默认设置,exifmv
仅使用移动/重命名来组织文件。你唯一的风险是文件最终出现在你不希望它们出现的地方。
但是——如果你指定了--remove-source
,它将删除原始文件。
⚠ 在这种情况下,原始文件将被永久删除!
或者,你可以使用--trash-source
,它将源文件移动到用户的回收站文件夹,从那里可以在大多数操作系统中恢复到原始位置。
在执行任何删除或移动到回收站之前,exifmv
会检查文件大小是否匹配。这并不等同于逐字节检查文件。但是由于几乎所有图像文件格式都使用某种形式的压缩,匹配大小对于本应用程序来说是一个很好的文件相同的指示器。
话虽如此:我已经使用这个应用程序大约七年了,没有丢失任何图像。因此,我有相当多的经验证据表明它不会破坏数据。
尽管如此——编写一些适当的测试可能会比我的话给其他人更多的信心。直到我找到时间做那件事:你已经被警告了。
使用方法
USAGE:
exifmv [OPTIONS] <SOURCE> [DESTINATION]
ARGS:
<SOURCE> Where to search for images
<DESTINATION> Where to move the images (if omitted, images will be moved to current dir)
[default: .]
OPTIONS:
--day-wrap <H[H][:M[M]]> The time at which the date wraps to the next day [default: 0:0]
--dry-run Do not move any files (forces --verbose)
-h, --help Print help information
-H, --halt-on-errors Exit if any errors are encountered
-l, --make-lowercase Change filename & extension to lowercase
-L, --dereference Dereference symbolic links
-r, --recurse-subdirs Recurse subdirectories
--remove-source Delete any SOURCE file existing at DESTINATION and matching in
size
--trash-source Move any SOURCE file existing at DESTINATION and matching in
size to the system's trash
-v, --verbose Babble a lot
-V, --version Print version information
历史
这是基于一个Python脚本,该脚本基本上做了同样的事情,并且很好地为我服务了15年。当我2018年开始学习Rust时,我决定将Python代码移植到Rust CLI应用程序,作为学习经验。
因此,这个应用程序可能不是你最近遇到的最好看的代码。它也可能包含非惯用(即非Rust)的编程方式。如果你愿意修复这些中的任何一项或添加一些酷炫的功能,我期待着合并你的PR。干杯!
当前版本:0.1.2
许可证
Apache-2.0 OR BSD-3-Clause OR MIT OR Zlib,由你自行选择。
依赖项
~6–33MB
~485K SLoC