全部,
我有一個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空像素
- 編解碼器:(空)
我在這裏缺少一個把戲?爲什麼腳本有時會有效,有時輸出爲空?
使用'mdimport -r PLUGIN'強制Spotlight使用特定插件重新編譯所有文件(使用mdimport -L獲取插件列表) – Jay 2012-10-01 05:49:55