일괄 ogg vorbis 트랜스코딩

일괄 ogg vorbis 트랜스코딩

내가 원하는 것은 단순히 이 명령을 실행하는 것뿐입니다.

find . -name "*flac" -exec oggenc -q 7 {} \;

내가 선택한 폴더에 oggs를 뱉어보세요. ~/vorbis명령 끝에 넣으려고 했지만 조건자 오류가 발생했습니다.

find: possible unquoted pattern after predicate `-execdir'?

"Find Man Pages"를 살펴봤고 {}끝에 있는 페이지가 파일을 -q 7찾는 것임을 알고 있습니다 flac. 그래서 이것이 나를 딜레마에 빠뜨린다.

선택한 폴더에 oggs를 출력하기 위해 명령에 무엇을 추가해야 하는지 아는 사람이 있습니까?

읽고 도와주셔서 감사합니다.

그런데, 나는 시도했다:

find . -name "*flac" -exec oggenc -q 7 ~/vorbis {} \;

그러나 이것은 flac가 있는 폴더에 oggs만 뱉어냅니다. ~/vorbis폴더가 아닙니다 . 폴더 이름과 구조를 유지하여 내가 선택한 폴더( ~/vorbis)에 출력하려고 합니다. 나는 완전한 대본을 요구하는 것이 아닙니다. 나는 단순히 내가 달성하려는 것을 어떻게 달성할 수 있는지 누군가에게 설명해달라고 요청하는 것뿐입니다.

감사합니다!

답변1

서브셸을 사용하면 파일 이름을 변경하고 다른 명령을 실행하여 출력이 원하는 위치로 이동하는지 확인할 수 있습니다.

mkdir -p ~/vorbis
find . -name "*flac" -exec sh -c 'oggenc -q 7 "$1" -o ~/vorbis/"${1%.*}".ogg' _ {} \;

...flac 모듈로 열기: "./summerbreezes.flac"를 "/home/k/vorbis/./summerbreezes.ogg"로 인코딩된 FLAC 파일 리더기(품질 7.00 [99.0%] [0m00s 남음) -

인코딩 파일 "/home/k/vorbis/./summerbreezes.ogg"를 완성하세요.

파일 길이: 1m 11.0s 경과 시간: 0m 01.3s 속도: 55.0760 평균 비트 전송률: 198.3kb/s

ls ~/vorbis
alsowe.ogg        christmascard.ogg  love1.ogg          themanyone2.ogg  yourmom.ogg
An_Open_Door.ogg  GEDC4177.ogg       summerbreezes.ogg  winning.ogg

답변2

경로에 신경 쓰지 않는다면 트릭 myfile.flac을 사용하여 -execdir모든 경로를 하나의 디렉토리에 넣을 수 있습니다.

find-execdir명령을 실행하기 전에 파일의 디렉터리가 변경됩니다. {}으로 변경되기도 했습니다 ./.

find . -name '*.flac' -execdir oggenc -q 7 -o ~/vorbis/{}.ogg {} \;

따라서 이 예에서는 해당 항목을 찾으면 다음과 같이 ./path/to/myfile.flac실행됩니다.

cd ./path/to
oggenc -q 7 -o ~/vorbis/./myfile.flac.ogg ./myfile.flac

(노트:적어도 GNU findutils의 경우 ./myfile.flac에는진짜상대 경로가 아닌 찾은 파일 또는 심볼릭 링크의 전체 경로이지만 OP의 질문에는 중요하지 않습니다.)

관련 정보