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?
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