2012-04-06 28 views
3

Alle,
Ich habe Shell-Skript, das alle Medien (Audio, Video) -Dateien in einem vom Benutzer angegebenen Ordner durchläuft und einen netten textbasierten Metadatenbericht erstellt. Ich bin auf einem Mac OS X und ich verwende Spotlight mdls Befehl, um alle relevanten Metadaten zu erhalten. Das Problem ist, dass manchmal in meinem Bericht für alle Mediendateien "null" Ergebnisse angezeigt werden. Wenn ich das Skript erneut ausführe, scheint es zu funktionieren. Ich bin verwirrt, warum das passiert. Dies ist Teil des Skripts, das die Metadaten Bericht ausgibt:Verwenden von mdls -Befehl zum Generieren eines Metadatenberichts

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 

Die erwartete Ausgabe ist wie folgt:

1) [./test1.mov]
- Dauer: 22.03
- Abmessungen: 480 x 640 Pixel
- Codec: ("H.264")

2) [./test2.mov]
- Dauer: 25.03
- Abmessungen: 480 x 640 Pixel
- Codec: ("H.264")

Aber manchmal ist der Ausgang null für alle Mediendateien:

1) [ ./test1.mov]
- Dauer: null
- Abmessungen: null X null Pixel
- Codec: (null)

2) [./test2.mov]
- Dauer: null
- Abmessungen: null X null Pixel
- Codec: (null)

Bin ich einen Trick hier fehlt? Warum funktioniert das Skript manchmal und gibt manchmal null aus?

Antwort

3

Das Problem war, dass Spotlight die Dateien nicht indexierte. Ich habe den Befehl mdimport verwendet, um Spotlight zu erzwingen, den Ordner zu indizieren, und das Problem wurde behoben.

+1

z. Verwenden Sie 'mdimport -r PLUGIN', um Spotlight zu zwingen, alle Dateien mit einem bestimmten Plugin neu zu indizieren (holen Sie sich die Liste der Plugins mit mdimport -L) – Jay