
find $(MY_DIR)/source -type f -name "*.wav3" -print0 | \
xargs -0 -P $(NPROC) -n1 -I {} \
mv {} $(MY_DIR)/sound/{}.wav
위에서 모든 .wav3 파일을 찾아서 사운드 폴더로 이동하려고 시도했지만 기본 이름을 유지하기 위해 출력 파일을 자르는 방법을 잘 모르겠습니다.
$(MY_DIR)/source/deeply/nested/file/song1.wav3
$(MY_DIR)/source/deeply/nested/file/song2.mp3.wav3
다음으로 이동됩니다:
$(MY_DIR)/sound/song1.wav
$(MY_DIR)/sound/song2.wav
스크립트를 어떻게 조정할 수 있나요?
답변1
find
++를 망칠 필요 없이 xargs
그냥 mv
전환해서 zsh
실행하면 됩니다.
autoload -U zmv
zmv -n '$(MY_DIR)/source/**/(*).wav3' '$(MY_DIR)/source/${1%%.*}.wav'
작동 방식:
- 먼저
zmv
로드합니다.autoload
-n
인수는 실행을 방지하는 것입니다. 결과가 만족스러우면 이 옵션을 제거하세요.- 이중 별표는
**
모든 중첩 디렉터리와 일치합니다. (*)
무엇이든 일치시키고 결과를$1
변수 에 저장${1%%.*}
첫 번째 점 뒤의 모든 후속 문자를 삭제합니다..wav
마지막으로 확장 추가