파일 이름이 001.mp3, 002.mp3, ..., 030.mp3 인 여러 개의 mp3 파일이 들어있는 일련의 디렉토리가 있습니다.-exec에서 명령을 실행하기 전에 find의 결과 정렬
내가 원하는 것은 하나의 mp3 파일에 모두 함께 정리하고 메타 데이터를 추가하는 것입니다.
#!/bin/bash
for d in */; do
cd $d
find . -iname '*.mp3' -exec lame --decode '{}' - ';' | lame --tt "$title_prefix$name" --ty "${name:5}" --ta "$artist" --tl "$album" -b 64 - $final_path"${d%/}".mp3
cd ..
done
때때로이 작동하고 나는 올바른 순서로 모든 "트랙"을 하나의 파일을 얻을 :
는 여기에 내가 (명확성을 위해, 몇 가지 변수 정의를 제거) 순간에 무슨이다.
그러나 실제로는 모든 "트랙"이 역순으로 된 단일 파일을 얻습니다. 실제로는 좋지 않습니다.
내가 이해할 수없는 것은 모든 디렉토리가 동일한 파일 이름 집합을 포함하므로 스크립트 실행마다 순서가 다른 이유입니다. 맨 페이지를 띄우고 찾을 수있는 정렬 옵션을 찾을 수 없습니다.
find . -iname '*.mp3' | sort -n >> temp.txt
을 실행하여 파일을 임시 파일에 저장 한 다음 시도해 볼 수는 있지만 그 파일은 절름발이로 작동하지 않습니다.
찾기 전에 exec를 실행하기 전에 정렬 할 수있는 방법이 있습니까? 여기서 많은 예제를 찾을 수 있으며 -exec ls
으로이 작업을 수행하지만 다른 작업을 수행해야하는 곳을 찾을 수는 없습니다.
내 자신의 배시 능력의 한계를 여기에 밀어 넣었지만'find와 같은 것을 할 수 있습니다. -iname '* .mp3'| sort -n | xargs'? 만약 그렇다면 입력을 받기 위해 절름발이 명령을 어떻게 재조정 할 것인가? –
yknivag
temp.txt에는 전체 경로 또는 일련의 파일 이름 만 포함됩니까? –
가능한 경우 임시 파일을 사용하지 않을 것입니다. 그러나 아마도 모든 유형의 파일 이름을 포함하도록 구성 될 수 있습니다. – yknivag