2012-04-06 35 views
3

全部,
我有一個shell腳本,它遍歷用戶提供的文件夾中的所有媒體(音頻,視頻)文件,並創建一個不錯的基於文本的元數據報告。我使用的是Mac OS X,我使用Spotlight的mdls命令獲取所有相關的元數據。問題是,有時我在我的報告中看到所有媒體文件的「空白」結果。如果我再次運行腳本,它似乎工作。我很困惑爲什麼會發生這種情況。這是將元數據輸出報告該腳本的一部分:使用mdls命令生成元數據報告

cd "path_to_folder" 
while IFS= read -r -d $'\0' file; do 
    duration=`mdls -name kMDItemDurationSeconds "$file" | cut -d "=" -f 2 ` 
    duration=`printf "%.2f" $duration;` 
    pixel_height=`mdls -name kMDItemPixelHeight "$file" | cut -d "=" -f 2` 
    pixel_width=`mdls -name kMDItemPixelWidth "$file" | cut -d "=" -f 2` 
    codec=`mdls -name kMDItemCodecs "$file" | cut -d "=" -f 2` 
    temp="$i) [$file]\n- Duration: $duration\n- Dimensions: $pixel_width X $pixel_height pixels\n- Codec: $codec\n" 
    metaDataOutput=$metaDataOutput"\n"$temp 
    i=$((i + 1)) 
done < <(find . \(-iname \*.m4v -o -iname \*.mov -o -iname \*.mp3 -o -iname \*.m4r -o -iname \*.m4a \) -print0) 

echo -e "\n[Report]\n"$metaDataOutput 

預期的輸出是這樣的:

1)[./test1.mov]
- 時間:22.03
- 尺寸:480 x 640像素
- 編解碼器:( 「H.264」)

2)[./test2.mov]
- 時間:25.03
- 尺寸:480 x 640像素
- 編解碼器:( 「H.264」)

但有時輸出爲null的所有媒體文件:

1)[ ./test1.mov]
- 時間:空
- 尺寸:空X空像素
- 編解碼器:(空)

2)./test2.mov]
- 時間:空
- 尺寸:空X空像素
- 編解碼器:(空)

我在這裏缺少一個把戲?爲什麼腳本有時會有效,有時輸出爲空?

回答

3

問題是Spotlight沒有索引文件。我使用mdimport命令強制Spotlight爲該文件夾建立索引,並解決了問題

+1

使用'mdimport -r PLUGIN'強制Spotlight使用特定插件重新編譯所有文件(使用mdimport -L獲取插件列表) – Jay 2012-10-01 05:49:55