2012-04-06 3 views
3

Все,
У меня есть сценарий оболочки, который проходит через все файлы мультимедиа (аудио, видео) в папке, поставляемой пользователем, и создает хороший отчет метаданных на основе текста. Я нахожусь на Mac OS X, и я использую команду mdls Spotlight, чтобы получить все соответствующие метаданные. Проблема в том, что иногда я вижу «нулевые» результаты в моем отчете для всех медиафайлов. Если я снова запустил сценарий, он, похоже, сработает. Я смущен, почему это происходит. Это является частью сценария, который выводит отчет о метаданных:с использованием команды 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 пикселей
- Codec: ("H.264")

2) [./test2.mov]
- Продолжительность: 25,03
- Размеры: 480 X 640 пикселей
- Кодек: ("H.264")

Но иногда выход нуль для всех медиа-файлов:

1) [ ./test1.mov]
- Продолжительность: нулевые
- Размеры: нуль X нулевых пикселей
- кодек: (нуль)

2) [./test2.mov]
- Продолжительность: нулевые
- Размеры: нуль X нулевых пикселей
- Codec: (нуль)

Я пропускаю трюк здесь? Почему скрипт работает иногда и иногда выводит нуль?

ответ

3

Проблема была в Spotlight, не индексируя файлы. Я использовал команду mdimport, чтобы заставить Spotlight индексировать папку и устранил проблему.

+1

например. используйте 'mdimport -r PLUGIN', чтобы заставить Spotlight переинсталлировать все файлы с определенным плагином (получить список плагинов с mdimport -L) – Jay

Смежные вопросы