내가 원하는 것은 단순히 이 명령을 실행하는 것뿐입니다.
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의 질문에는 중요하지 않습니다.)