如果問題標題不夠豐富,我很抱歉。請隨時提出一個更好的變體。find,xargs:爲每個文件執行命令鏈
我想執行以下任務: 在一個目錄中,我有一些文件是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
?