OS X comando mdls dá “nulo” na saída

1

Eu tenho o script bash que utiliza o comando mdls baseado em Mac em um script de shell para gerar um relatório de metadados para arquivos de mídia. Quando o script funciona, a saída é assim:

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

Às vezes, obtenho nulo nos resultados de todos os arquivos no relatório:

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

Aqui está o meu script que gera o relatório:

cd "path_to_folder"
while IFS= read -r -d $'
1) [./test1.mov]  
- Duration: 22.03  
- Dimensions: 480 X 640 pixels   
- Codec: ( "H.264" )  
' 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

Alguma ideia do que eu posso estar fazendo errado aqui? Por que os nulos?

    
por smokinguns 06.04.2012 / 21:15

1 resposta

1

Talvez o arquivo esteja excluído do índice do Spotlight? Ou talvez seja em um disco rígido ou compartilhamento de rede que não suporta indexação de holofotes?

Se nenhum desses for o caso, parece que seu banco de dados do Spotlight está quebrado. Existem algumas otimizações extremamente complicadas no holofote para manter seu impacto no desempenho ao mínimo, e às vezes ele quebra.

Você pode usar mdutil para descobrir o status do banco de dados de destaque de uma unidade (use /Volumes/other_disk se não quiser aplicá-los ao disco de inicialização):

sudo mdutil -s /

Você pode excluir / limpar o banco de dados em um determinado disco executando:

sudo mdutil -E /

O Spotlight reconstruirá o índice quando parecer que está (provavelmente quando o sistema estiver inativo). Você pode aumentar o índice para re-indexar imediatamente com:

sudo mdutil -i on /

Dependendo de quantos arquivos você tem em seu sistema, pode levar várias horas para reconstruir o índice. Você pode acompanhar o progresso no ícone de pesquisa de holofotes da GUI.

Veja man mdutil para mais informações.

    
por 08.04.2012 / 10:38