2017-11-12 14 views
0

.tap 파일 (retrogaming)을 .wav 오디오 파일로 변환하는 작은 프로그램을 호출합니다. 프로그램은 새 파일을 출력하고 .wav 확장자를 추가합니다. 예 : "file.tap"은 "file.tap.wav"가됩니다.Bash : 확장 영역이 두 개인 파일의 이름을 바꾸는 방법은 무엇입니까?

변환을 배치하는 작은 스크립트를 작성했습니다. 그것은 작동하지만 파일의 이름을 ".tap"을 제거 할 수 있도록 파일의 이름을 바꿀 수는 없습니다. 원래 파일에 소문자 또는 대문자가있는 경우가 있습니다.

여기 내 코드입니다. 어떤 도움도 환영합니다. 제 생각은 최종 파일 이름에서 ".tap"또는 ".TAP"을 지우는 것입니다. nb : 지시에 $ file.wav를 사용해야합니다. 그렇지 않으면 작동하지 않습니다. 는

#!/bin/bash 

for file in `ls`; 
do 
    ./tape_converter -11 -a $file $file.wav ; 
    mv $file ${file/\.tap\.wav/\.wav/}; 

done 

답변

0

직접 같은 기본 이름과 확장자 ".WAV"와 출력 파일의 이름을 지정합니다

for f in *.tap; do 
    <your command> "$f" "${f%.*}.wav" 
done 

이런 식으로 스크립트를 수정할 수 있습니다.

+0

(확장으로 .tap가) 원본 파일에서 제거 해결책. 결국 그것은 효과가있다. 그게 중요한 포인트 야. – froggy

0

그때 .wav을 추가, .tap을 제거 당신의 도움을 주셔서 감사합니다; 교체를 시도 할 필요가 없습니다.

for f in *; do 
    ./tape_converter -11 -a "$f" "$f.wav" 
    mv -- "$f" "${f%.tap}.wav" 
done 
+0

이 최종 파일에 ".tap"을 제거하지 않습니다 – froggy

+0

이를 .tap 제거하지 않습니다, 그러나 그것은 실제로의 일부입니다 – froggy

0

여기 내 마지막 코드입니다. 감사합니다. 그것은 잘 작동합니다. 행복.

for i in *; 
    do mv "$i" "$(echo $i|tr A-Z a-z)"; 
done 

mkdir output 

for f in *.tap; 
do 
     ./tape_converter -11 -a $f ${f%.*}.wav ; 
     mv *.wav output/ 
done