【发布时间】:2021-04-15 16:16:48
【问题描述】:
正如标题所说,我正在尝试根据用于拍摄它们的相机对文件夹中的图像进行排序。我一直在努力学习如何使用管道和 xargs,我想我快到了。唯一的问题是最后一个 xargs 似乎只在 awk 遍历整个文件夹而不是每个文件时才执行。如果我这样做:
find temp/sorted/jpg_over_300px/ -type f -exec identify -quiet -format '%[EXIF:model] %i \n' '{}' \; | gawk '$2=="SE" {print $3}'
我得到了很好的干净结果,找到了新的文件,并且 exif 相机型号与 iPhone SE 的“SE”匹配。但是,如果我添加 xargs -I % mv % [new_folder] 命令将文件移动到不同的文件夹,则 mv 只有在所有文件夹都被完全扫描后才会执行(我知道,因为我尝试过使用仅包含一个文件的文件夹)。
find temp/sorted/jpg_over_300px/ -type f -exec identify -quiet -format '%[EXIF:model] %i \n' '{}' \; | gawk '$2=="SE"{print $3}' | xargs -I % mv % temp/sorted/jpg_iphone_se/
我想避免这种情况,因为我的文件夹中有很多文件,我想避免“参数过多”的情况。我尝试将 -print0 添加到 find 并将 -0 添加到 xargs 但没有运气。
感谢您的宝贵时间
【问题讨论】: