다음을 수행하는 간단한 스크립트를 작성하고 싶습니다.
- 오디오 파일(WAV, FLAC, MP3 및 AIFF)에서 메타데이터 읽기
- 비트 전송률이 임계값보다 낮으면 오류 메시지가 반환됩니다.
- 아티스트-제목-연도 등과 같은 특정 형식으로 파일 이름을 바꿉니다.
- 다른 폴더로 옮기세요
쉘 스크립팅에 대한 나의 경험은 매우 제한적이지만 특히 메타데이터 읽기와 관련하여 누군가 나에게 올바른 방향을 알려줄 수 있는지 궁금합니다. 누군가 쉘 스크립트를 작성하는 다른 방법을 제안할 수 있다면 그것도 도움이 될 것입니다!
답변1
나는 당신의 태도가 마음에 든다. 당신은 누구에게도 "숙제를 하라"고 묻지 않고, 떠들썩하게 대답을 해주기 때문이다.
exiftool
파일 메타데이터를 읽고 출력하는 프로그램 과 같은 프로그램을 사용해야 합니다 . 이 경우 exiftool
출력할 메타데이터 태그를 선택할 수 있습니다(예: ) exiftool -maxbitrate filename
. 옵션 없이 샘플 파일에서 프로그램을 실행하여 시작하면 사용 가능한 태그를 찾아보고 관심 있는 태그를 선택할 수 있습니다. 레이블은 공백이 포함되어 대문자로 표시될 수 있지만 공백 없이 대소문자를 구분하지 않고 프로그래밍 방식으로 사용할 수 있습니다. 메타데이터 태그 "최대 비트 전송률"은 명령줄 옵션으로 지정됩니다 -maxbitrate
.
을 선택하면 많은 단계를 절약할 수 있으며 원하는 형식으로 파일 이름을 바꾸기 위한 메타데이터 요소를 얻는 데 도움이 되도록 출력을 사용자 정의하는 exiftool
옵션을 활용할 수 있습니다 . -printFormat
이 기능의 사용 예는 다음과 같습니다 exiftool -Bitdepth -MaxBitRate -p 'blah $Bitdepth blah $Maxbitrate' your_file.mp3
. man
자세한 내용은 페이지를 읽어보세요 .
다른 메타데이터 프로그램의 경우 두 번째 프로그램을 사용하여 결과를 구문 분석해야 할 수도 있습니다. 예를 들어 awk
관심 있는 데이터 필드(귀하의 경우 비트 전송률)만 가져오고 셸의산수-lt
또는 -gt
플래그 오류 와 같은 테스트를 비교합니다 .
스크립트의 나머지 요구 사항에 대해서는 이름 바꾸기 및 이동 작업을 한 단계로 수행할 수 있습니다. 문제는 당신이 찾고 있는 정보를 얻는 것입니다. 이번에도 귀하가 선택한 메타데이터 프로그램(예: exiftool
)이 이 정보를 제공합니다.
답변2
bash
솔루션미디어 정보도구(비디오 및 오디오 파일에 대해 가장 관련성이 높은 기술 및 태그 데이터를 편리하게 통합하여 표시):
#!/bin/bash
dest="/path/to/dir" # path to destination directory
trsh=256 # threshold
IFS='|' # input field separator
while read -r author title year bitrate; do
if [[ "$((bitrate/1000))" -lt $trsh ]]; then
echo "Bitrate is below $trsh Kbps"
exit 1
fi
mv "$1" "${dest}/${author}-${title}-${year}.${1##*.}"
done < <(mediainfo --Inform="General;%Performer%|%Track%|%Recorded_Date%|%BitRate%" "$1")