【发布时间】:2017-04-03 16:06:21
【问题描述】:
如果问题标题信息不足,我很抱歉。请随时提出更好的变体。
我想执行以下任务: 在一个目录中,我有许多 JPEG 格式的照片文件。我想从 EXIF 中提取这些照片的拍摄日期,为每个日期创建一个新目录,并将文件移动到相关目录。
(EXIF日期和时间格式为YYYY:MM:DD hh:mm:ss,我希望目录名格式为YYYY-MM-DD,这就是我使用sed的原因)
我有点知道如何分别执行这些任务,但未能将它们放在一起。我花了一些时间研究如何使用find 和-exec 或xargs 执行命令,但仍然无法理解如何正确链接所有内容。
最后我能够使用两个命令完成我的任务:
find . -name '*.jpg' -exec sh -c "identify -format %[exif:DateTimeOriginal] {}
| sed 's/ [0-9:]*//; s/:/-/g' | xargs mkdir -p" \;
find . -name '*.jpg' -exec sh -c "identify -format %[exif:DateTimeOriginal] {}
| sed 's/ [0-9:]*//; s/:/-/g; s/$/\//' | xargs mv {}" \;
但我不喜欢重复,也不喜欢-exec sh -c。有没有正确的方法在一行中做到这一点而不使用-exec sh -c?
【问题讨论】:
标签: bash shell find pipe xargs