我有一個驅動器可以安裝在/ run/media/jeremy/MONSTER上,這些驅動器擁有大量的光圈庫,iPhoto庫和多年的主目錄備份。在bash中複製整個驅動器中的所有照片?
我想追蹤每個gif,jpg,jpeg和加農炮原始文件,並將它們複製到/run/media/jeremy/1.4t_Video/photos,並最好讓它們根據文件創建給出一個唯一的名稱日期。我認爲bash可以完成任務,但不知道如何去做。
我有一個驅動器可以安裝在/ run/media/jeremy/MONSTER上,這些驅動器擁有大量的光圈庫,iPhoto庫和多年的主目錄備份。在bash中複製整個驅動器中的所有照片?
我想追蹤每個gif,jpg,jpeg和加農炮原始文件,並將它們複製到/run/media/jeremy/1.4t_Video/photos,並最好讓它們根據文件創建給出一個唯一的名稱日期。我認爲bash可以完成任務,但不知道如何去做。
find /run/media/jeremy/MONSTER \(-iname \*.gif -o -iname \*.jpg -o -iname \*.jpeg \) -exec cp {} /run/media/jeremy/1.4t_Video/photos/ \;
這應該找到這些信息並將其複製到/run/media/jeremy/1.4t_Video/photos/
結尾的所有文件,如果你想添加更多的擴展只需使用-o -iname *。
您應該嘗試解釋這是做什麼 – Jeff
完成謝謝.... –
你可以使用一個這樣的腳本:
#!/bin/bash
serial=0
find /run/media/jeremy/MONSTER \(-iname \*.gif -o -iname \*.jpg -o -iname \*.jpeg -o -iname \*.cr2 \) -print0 |
while read -r -d '' f; do
# Get its extension, like "jpg" or "cr2"
ext=${f##*.}
# Get its date of creation like "2012-01-07 11:06:45"
datetime=$(stat --printf="%w" "$f" | sed 's|\..*||')
# Formulate a new name
new="/output/dir/${datetime}-${serial}.${ext}"
# Show what we came up with
echo Would copy $f to $new
# cp "$f" "$new"
((serial++))
done
目前,它什麼也不做,只是顯示它會怎麼做。取消第3行到最後一行的註釋,通過在cp
前刪除#
(如果它看起來正確)。請做好備份第一和試驗用少量文件的...
樣本輸出
Would copy ./b.jpg to /output/dir/2016-02-11 10:40:58-0.jpg
Would copy ./mosaic/0.jpg to /output/dir/2016-02-08 12:36:06-1.jpg
Would copy ./mosaic/1.jpg to /output/dir/2016-02-08 12:36:07-2.jpg
Would copy ./mosaic/10.jpg to /output/dir/2016-02-08 12:36:12-3.jpg
Would copy ./mosaic/100.jpg to /output/dir/2016-02-08 12:36:41-4.jpg
Would copy ./mosaic/101.jpg to /output/dir/2016-02-08 12:36:42-5.jpg
Would copy ./mosaic/102.jpg to /output/dir/2016-02-08 12:36:42-6.jpg
Would copy ./mosaic/103.jpg to /output/dir/2016-02-08 12:36:42-7.jpg
看看強大'find'工具。從閱讀手冊頁開始:'man find' ... – arkascha