터미널의 다양한 폴더에서 .cue가 포함된 .ape를 .flac로 일괄 변환하고 분할합니다.

터미널의 다양한 폴더에서 .cue가 포함된 .ape를 .flac로 일괄 변환하고 분할합니다.

저는 44GB(예, 44개)의 .apeCD 파일 폴더를 가지고 있습니다. 각각 .ape은 완전한 CD이며 일반적 .cue으로 각 .ape. 통과할 큐 데이터가 없기 때문에 변환해야 하지만 분할해서는 안 됩니다. 거기에는 내가 신경쓰지 않는 .jpgs와 s 도 있습니다 . 명령 출력이 이를 시각화하는 데 도움이 .log된다면 tree다음과 같이 하세요.

├── Philips Mozart Collection - 180 CD
│   │   ├── box01-Symphonies
│   │   │   ├── 1B.jpg
│   │   │   ├── 1F.jpg
│   │   │   ├── cd01
│   │   │   │   ├── CDImage.ape
│   │   │   │   ├── CDImage.ape.cue
│   │   │   │   ├── Complete Mozart Edition, Vol. 01, Early Symphonies (Disc 1) - Neville Mariner, Academy of St. Martin in the Fields.log
│   │   │   │   ├── img421.jpg
│   │   │   │   └── img422.jpg
│   │   │   ├── cd02
│   │   │   │   └── CDImage.ape
│   │   │   ├── cd03
│   │   │   │   ├── CDImage.ape
│   │   │   │   ├── CDImage.ape.cue
│   │   │   │   ├── Complete Mozart Edition, Vol. 01, Early Symphonies (Disc 2) - Sir Neville Marinner - Acadamy of St Martin in the Fields.log
│   │   │   │   ├── img426.jpg
│   │   │   │   └── img427.jpg
│   │   │   ├── cd04

등등... 180 CDS까지요.

.ape기본적으로 모든 파일을 여러 .flac파일로 분할하고 에서 태그 정보를 복사하여 .cue디렉터리 구조를 유지하고 싶습니다 (바람직하게는 완전히 새롭고 다른 디렉터리에 있음). 가능하다면 스크립트보다 한 줄 명령을 선호합니다. 이 문제를 어떻게 해결할까요? 이 작업을 수행하는 방법을 아는 사람에게 감사합니다!

그리고 누군가가 이 질문을 여기에 있는 질문과 중복된 것으로 표시하기 전에: 모든 .ape 파일을 다른 하위 폴더의 .flac로 변환, 해당 사용자가 .ape를 여러 개의 .flacs로 분할할 필요가 없다는 점을 지적하고 싶습니다.

답변1

이 작업은 거의 수행하지 않기 때문에 여러 단계로 수행하겠습니다. 여기서는 자동화보다 투명성이 더 중요합니다. 그러나 한 줄도 가능합니다. 각 단계마다 모든 파일에 대해 하나의 명령만 사용한다면 이것이 의도한 것이라고 가정합니다.

ffmpeg(또는 avconv)이 있어야 하며 shntool설치 되어 있어야 합니다 cuetools.

.ape모든 것을 제자리 로 변환하려면 다음을 수행 .flac하십시오.

find . -name "*.ape" -exec sh -c 'exec ffmpeg -i "$1" "${1%.ape}.flac"' _ {} \;

APE 파일용 패치된 MAC 인코더 및 디코더를 다음에서 설치하는 경우 http://shnutils.freeshell.org/shntool/, 이 첫 번째 단계는 불필요합니다. 하지만 당신은 당신 자신 g++과 함께 컴파일해야 할 것입니다 yasm. .tta대신에 자주 사용되는 파일도 마찬가지입니다 .ape.

나뉘다그리고 이름 .flac파일:

find . -name "*.cue" -exec sh -c 'exec shnsplit -f "$1" -o flac -t "%n_%p-%t" "${1%.cue}.flac"' _ {} \;

shnsplit변환에도 사용되는 경우 .flacin 을 "${1%.cue}.flac"변환하려는 형식의 확장자로 바꾸세요.

  • %n- 트랙 번호
  • %p– 출연자
  • %t– 트랙 이름

.cue파일 이름 은 파일 에서 가져옵니다 .flac. 결과 분할 .flac파일에 태그를 지정하려면:

find . -name "*.cue" -execdir sh -c 'exec cuetag "$1" *.flac' _ {} \;

여유 시간에 나머지 CDImage.ape.cue, CDImage.flac및 파일을 제거하십시오. CDImage.ape이름은 고유하므로 모차르트가 내가 알지 못하는 find . -name "CDImage*" -delete작곡을 시작하는 경우를 제외하고는 단순한 것만으로도 충분합니다 .CDImage

작동 하려면 shnsplit파일을 읽고 쓸 수 있도록 필요한 모든 인코더/디코더를 설치해야 합니다. APE(및 TTA 형식)용 모듈은 소스에서 컴파일해야 하며, 다른 모듈은 패키지(예: FLAC)를 설치하여 컴파일해야 합니다.

이는 확장자를 제외하고 .cue.tta/ .flac/ 파일의 이름 이 동일한 모든 표준 사례에 적용됩니다 ..ape


다른 사람을 위한 부수적 발언: 이 변환을 처리하는 경우 원본 파일은 APE 및 TTA가 다른 곳보다 더 많이 사용되는 일본 원본일 수 있습니다. .cue파일이 처음에 SHIFT-JIS로 코딩되었고 이제 UTF-8로 열린 경우 shnsplit단계는 다음 과 같습니다.깨질 것이다. .cue파일 이름을 바꿔야합니다

find . -name "*.cue" -exec rename 's/\.cue$/.cux/' -- {} +

다음을 사용하여 중간 파일을 UTF-8로 변환합니다.

find . -name "*.cux" -exec sh -c 'exec iconv -f SHIFT-JIS -t UTF-8 -o "${1%.cux}.cue" -- "$1"' _ {} \;

위의 단계를 수행하기 전에. .cux다음 작업이 끝나면 파일을 제거하는 것을 잊지 마십시오 .

find . -name "*.cux" -delete

관련 정보