2016年10月30日 星期日

Mac : 依日期分目錄歸檔的 shell script

幫同事救行動碟中的資料,由於救回的檔案幾乎只剩一堆編號,原來的檔名都不見了,加上資料量大,於是想順便幫忙把照片檔案按日期分別置入不同的資料夾中。找到在 Ask MetaFilter 中的這篇文章:


裡面是利用 shell script 去呼叫 Mac OS X 中的底下幾個指令來達成按日期歸檔的:

  • 「ls -1」:列出目錄中所有的檔案檔名。
  • 「mdls」:列出檔案的 metadata contents。
  • 「grep CreationDate」:只顯示帶有「CreationDate」的那行資料。
  • 「awk '{print $3}'」:以空白當分隔符號,取出第三個欄位的資料(年月日)。
  • 「export date=」:將找出的日期設為「date」的環境變數

以此來判斷日期的目錄是否存在,已存在就執行「cp」的指令複製檔案,不存在則先利用「mkdir」指令來建立目錄後,再執行檔案複製。

因為我已經將救回的檔案備份到另一顆隨身碟中了,所以在備份目錄中的操作,將原網頁中的指令改用「mv」指令,也就是用搬移來取代複製。

另外,此次救援的主要對象是照片和影片檔案,所以在列出檔案清單的「ls」指令後面加上了可能的副檔名「*.jpg *.nef *.mp4 *.mpg *.avi *.mov」來過濾,只搬移那些副檔名的檔案,其它的都不處理。

底下是依日期分目錄歸檔的 shell script :

#!/bin/bash
for image in `ls  -1 *.jpg *.nef *.mp4 *.mpg *.avi *.mov`; do export date=`mdls $image | grep CreationDate | awk '{print $3}'`;
if [ -d ./$date/ ]
then
mv $image ./$date/
else
mkdir ./$date/ && mv $image ./$date/
fi; done
exit

參考文章:

沒有留言:

張貼留言

 
© 2009. Design by Pocket