OS X mdls 명령은 출력에서 ​​"널"을 제공합니다


2

셸 스크립트에서 Mac 기반 mdls 명령을 사용하여 미디어 파일에 대한 메타 데이터 보고서를 생성하는 bash 스크립트가 있습니다. 스크립트가 작동하면 출력은 다음과 같습니다.

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

때로는 보고서의 모든 파일에 대한 결과에서 null을 얻습니다.

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 

내가 여기서 뭘 잘못하고 있을지 모르겠어? 왜 널인가?


그래서 때로는 모든 파일에서 작동하지만 그렇지 않다고 말합니다. 아니면 특정 파일에서만 발생합니까?
slhck

답변:


2

아마도 파일이 스포트라이트의 색인에서 제외 되었습니까? 아니면 스포트라이트 인덱싱을 지원하지 않는 하드 드라이브 나 네트워크 공유에 있습니까?

이러한 경우가 없으면 스포트라이트 데이터베이스가 고장난 것 같습니다. 성능에 미치는 영향을 최소화하기 위해 극도로 복잡한 최적화가 있으며 때로는 중단됩니다.

mdutil드라이브의 스포트라이트 데이터베이스 상태를 찾는 데 사용할 수 있습니다 ( /Volumes/other_disk부팅 디스크에 적용하지 않으려는 경우 사용 ).

sudo mdutil -s /

다음을 실행하여 특정 디스크에서 데이터베이스를 삭제 / 세척 할 수 있습니다.

sudo mdutil -E /

그런 다음 Spotlight는 느낌이들 때 (아마 시스템이 유휴 상태 일 때) 색인을 다시 작성합니다. 다음과 같이 즉시 다시 색인을 생성 할 수 있습니다.

sudo mdutil -i on /

시스템에있는 파일 수에 따라 인덱스를 다시 작성하는 데 몇 시간이 걸릴 수 있습니다. GUI의 스포트라이트 검색 아이콘에서 진행 상황을 확인할 수 있습니다.

자세한 내용 man mdutil은 참조하십시오 .

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.