2012-04-06 5 views
3

すべて、
ユーザが提供するすべてのメディア(オーディオ、ビデオ)ファイルを処理し、素敵なテキストベースのメタデータレポートを作成するシェルスクリプトがあります。 Mac OS Xにあります。Spotlightのmdlsコマンドを使用して関連するすべてのメタデータを取得しています。問題は、すべてのメディアファイルについてレポートに「null」という結果が表示されることがあることです。スクリプトをもう一度実行すると、うまくいくように見えます。なぜこれが起こっているのか分かりません。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×640ピクセル
- コーデック( "H.264")

2)[./test2.mov]
- 時間:25.03
- 寸法:480 X 640ピクセル
- コーデック:( "H.264")

しかし、時には出力は、すべてのメディアファイルの場合はnullです:

1)[ ./test1.mov]
- 時間:ヌル
- 寸法:ヌルXヌルピクセル
- コーデック:(ヌル)

2)[./test2.mov]
- 時間:ヌル
- 寸法:nullのXヌルピクセル
- コーデック:(ヌル)

私はここのトリック足りませんか?スクリプトは時々動作し、時にはnullを出力するのはなぜですか?

答えて

3

問題はSpotlightがファイルのインデックスを作成しないことでした。私はmdimportコマンドを使用してSpotlightにフォルダのインデックスを作成させ、問題を解決しました。

+1

'mdimport -r PLUGIN'を使ってSpotlightに特定のプラグインを持つすべてのファイルを再インデクスさせる(mdimport -Lを使ってプラグインのリストを取得する) – Jay