전체 경로가 포함된 오디오 파일을 나열할 수 있습니다. (테스트에는 '-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