셸 스크립트에서 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
내가 여기서 뭘 잘못하고 있을지 모르겠어? 왜 널인가?
답변
아마도 파일이 스포트라이트의 색인에서 제외 되었습니까? 아니면 스포트라이트 인덱싱을 지원하지 않는 하드 드라이브 나 네트워크 공유에 있습니까?
이러한 경우가 없으면 스포트라이트 데이터베이스가 고장난 것 같습니다. 성능에 미치는 영향을 최소화하기 위해 극도로 복잡한 최적화가 있으며 때로는 중단됩니다.
mdutil
드라이브의 스포트라이트 데이터베이스 상태를 찾는 데 사용할 수 있습니다 ( /Volumes/other_disk
부팅 디스크에 적용하지 않으려는 경우 사용 ).
sudo mdutil -s /
다음을 실행하여 특정 디스크에서 데이터베이스를 삭제 / 세척 할 수 있습니다.
sudo mdutil -E /
그런 다음 Spotlight는 느낌이들 때 (아마 시스템이 유휴 상태 일 때) 색인을 다시 작성합니다. 다음과 같이 즉시 다시 색인을 생성 할 수 있습니다.
sudo mdutil -i on /
시스템에있는 파일 수에 따라 인덱스를 다시 작성하는 데 몇 시간이 걸릴 수 있습니다. GUI의 스포트라이트 검색 아이콘에서 진행 상황을 확인할 수 있습니다.
자세한 내용 man mdutil
은 참조하십시오 .