2

У меня есть сценарий bash, который использует команду mdls для Mac в сценарии оболочки для создания отчета о метаданных для медиа-файлов. Когда скрипт работает, вывод выглядит так:

1) [./test1.mov]  
- Duration: 22.03  
- Dimensions: 480 X 640 pixels   
- Codec: ( "H.264" )  

Иногда я получаю нулевое значение в результатах для всех файлов в отчете:

1) [./test1.mov]   
- Duration: (null)   
- Dimensions: (null) X (null) pixels  
- Codec: ( null )     

Вот мой скрипт, который генерирует отчет:

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 \*.m4r -o -iname \*.m4a \)  -print0 )

 echo -e  "\n[Report]\n"$metaDataOutput 

Есть идеи, что я могу здесь делать не так? Почему нули?

1 ответ1

2

Возможно, файл исключен из индекса прожектора? Или, может быть, он находится на жестком диске или в общей сетевой папке, которая не поддерживает точечную индексацию?

Если ни один из них не соответствует действительности, похоже, что ваша база данных прожекторов не работает. В центре внимания находятся некоторые чрезвычайно сложные оптимизации, позволяющие свести к минимуму влияние на производительность, а иногда и сбои.

Вы можете использовать mdutil чтобы узнать состояние базы данных прожектора диска (используйте /Volumes/other_disk если вы не хотите применять их к загрузочному диску):

sudo mdutil -s /

Вы можете удалить / очистить базу данных на конкретном диске, выполнив:

sudo mdutil -E /

Затем Spotlight перестроит индекс, когда он захочет (возможно, когда ваша система бездействует). Вы можете сразу же переиндексировать его:

sudo mdutil -i on /

В зависимости от количества файлов в вашей системе, восстановление индекса может занять много часов. Вы можете следить за прогрессом в значке поиска прожектора GUI.

Смотрите man mdutil для получения дополнительной информации.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .