전체 경로가 포함된 오디오 파일을 나열할 수 있습니다. ("-onlyin"으로 테스트됨)
$ mdfind -0 -onlyin ~/Music kind:audio | xargs -0 -n 1
/Users/rrasch/Music/iTunes/iTunes Media/Music/Unknown Artist/Unknown Album/1998-04-29_OB07264seg6of6_Z86.wav
/Users/rrasch/Music/iTunes/iTunes Media/Music/Unknown Artist/Unknown Album/1998-04-29_OB07264seg4of6_Z86.wav
/Users/rrasch/Music/iTunes/iTunes Media/Music/Unknown Artist/Unknown Album/1998-04-29_OB07264seg1of6_Z86.wav
/Users/rrasch/Music/iTunes/iTunes Media/Music/Unknown Artist/Unknown Album/1993-11-04_illiteracy_laura_jaeger_jim_latemer_2448.wav
xargs에서 mdls를 인수로 실행하여 비트 깊이와 샘플링 속도를 얻을 수도 있습니다.
$ mdfind -0 -onlyin ~/Music kind:audio | xargs -0 mdls -name kMDItemAudioSampleRate -name kMDItemBitsPerSample -raw | xargs -0 -n 2
44100 24
44100 24
44100 24
48000 24
mdls에 kMDItemFSName을 추가하면 파일 이름과 비트 심도, 샘플 속도를 얻을 수 있지만 경로는 손실됩니다.
$ mdfind -0 -onlyin ~/Music kind:audio | xargs -0 mdls -name kMDItemAudioSampleRate -name kMDItemBitsPerSample -name kMDItemFSName -raw | xargs -0 -n 3
44100 24 1998-04-29_OB07264seg6of6_Z86.wav
44100 24 1998-04-29_OB07264seg4of6_Z86.wav
44100 24 1998-04-29_OB07264seg1of6_Z86.wav
48000 24 1993-11-04_illiteracy_laura_jaeger_jim_latemer_2448.wav
여러 디렉터리에서 오디오를 검색하고 싶습니다(배포할 때 "-onlyin"은 생략하겠습니다). 비트 깊이와 샘플 속도가 포함된 전체 경로를 어떻게 나열할 수 있습니까? 다음과 같습니다.
44100 24 /Users/rrasch/Music/iTunes/iTunes Media/Music/Unknown Artist/Unknown Album/1998-04-29_OB07264seg6of6_Z86.wav
44100 24 /Users/rrasch/Music/iTunes/iTunes Media/Music/Unknown Artist/Unknown Album/1998-04-29_OB07264seg4of6_Z86.wav
44100 24 /Users/rrasch/Music/iTunes/iTunes Media/Music/Unknown Artist/Unknown Album/1998-04-29_OB07264seg1of6_Z86.wav
48000 24 /Users/rrasch/Music/iTunes/iTunes Media/Music/Unknown Artist/Unknown Album/1993-11-04_illiteracy_laura_jaeger_jim_latemer_2448.wav
답변1
위와 비슷한 결과를 얻기 위해 gfind(brew install findutils)를 사용합니다.
$ gfind /tmp/temp -iname "*.mp4" -printf '\n' -exec ls {} \; -exec mdls -name kMDItemAudioSampleRate -name kMDItemBitsPerSample -raw {} \; | xargs -0 -n 2
/tmp/temp/a.mp4
(null) (null)
/tmp/temp/b.mp4
(null)
(null)
/tmp/temp/c.mp4
(null) (null)
/tmp/temp/d.mp4
(null)
(null)
답변2
다음에서 호출되는 짧은 인라인 스크립트 xargs
:
mdfind -0 -onlyin ~/Music kind:audio | xargs -0 sh -c '
for pathname do
printf "%s %s %s\n" \
"$( mdls -name kMDItemAudioSampleRate -raw "$pathname" )" \
"$( mdls -name kMDItemBitsPerSample -raw "$pathname" )" \
"$pathname"
done' sh
루프는 발견된 경로 이름의 배치를 수신합니다 mdfind
. 각 경로 이름에 대해 mdls
관심 있는 두 가지 속성을 추출하고 경로 이름 자체와 함께 해당 값을 인쇄하는 데 사용합니다 printf
.
또는 경로 이름당 한 번만 호출 kMDItemPath
할 수 있는 이 속성을 사용해 보십시오.mdls
mdfind -0 -onlyin ~/Music kind:audio | xargs -0 sh -c '
for pathname do
mdls -name kMDItemAudioSampleRate \
-name kMDItemBitsPerSample \
-name kMDItemPath \
-raw "$pathname" | tr "\0" " "
echo
done' sh