Bash를 사용하여 여러 파일의 중간 이름 바꾸기

Bash를 사용하여 여러 파일의 중간 이름 바꾸기

파일이 여러 개 있는데 /opt/rec/bash를 사용하여 일부 파일의 이름만 바꾸고 싶습니다.

원본 파일 이름:

WK6LZTPR99999999_dig_2017-07-10 01:55:57.xy

이 디렉터리의 모든 파일을 다음으로 변경하고 싶습니다.

WK6LZTPR99999999_cur_2017-07-10 01:55:57.mp3

답변1

bash해결책 은 다음과 같습니다 .

for file in /path/to/*; do 
    nname="${file%%.*}.mp3"  # strip last part of file till first . seen
    echo mv "$file" "${nname//dig/cur}"  # replace 'dig' with 'cur'
done

그것으로 mmv훨씬 쉽습니다.

mmv '*_*_*.*' '#1_cur_#3.mp3'

또는 다음을 사용하여 zmv:

zmv -w '*_*_*.*' '$1_cur_$3.mp3'

답변2

그리고진주 이름을 바꿔라주문하다:

rename 's/_dig_([^.]+)\.xy$/_cur_$1.mp3/' /opt/rec/*.xy

답변3

다음 두 단계만으로 이름 바꾸기 명령을 사용할 수 있습니다.

cd /opt/rec/
rename -v "_dig_" "_cur_" *.xy
rename -v ".xy" ".mp3" *.xy

관련 정보