다음 파일의 이름을 일괄적으로 바꾸려고 합니다.
art-faculty-3_29060055362_o.jpeg
fine-arts-division-faculty-2016-2017-5_29165851925_o.jpeg
theatre-faculty-2016-2017-1_29132529356_o.jpeg
art-history-faculty-2016-2017-1_29060057642_o.jpeg
music-faculty-2016-2017-1_29132523816_o.jpeg
이름을 다음과 같이 바꾸고 싶습니다.
art-faculty.jpeg
fine-arts-division-faculty.jpeg
theatre-faculty.jpeg
art-history-faculty.jpeg
music-faculty.jpeg
이것이 내가 지금까지 가지고 있는 것입니다:
rename -n -D '/faculty(.*)/g' -X -v *
그러면 다음이 반환됩니다.
Using expression: sub { use feature ':5.18'; s/\/faculty\(\.\*\)\/g//g; s/\. ([^.]+)\z//x and do { push @EXT, $1; $EXT = join ".", reverse @EXT } }
'art-faculty-3_29060055362_o.jpeg' unchanged
'art-history-faculty-2016-2017-1_29060057642_o.jpeg' unchanged
'fine-arts-division-faculty-2016-2017-5_29165851925_o.jpeg' unchanged
'music-faculty-2016-2017-1_29132523816_o.jpeg' unchanged
'theatre-faculty-2016-2017-1_29132529356_o.jpeg' unchanged
삭제(-D) 변환에 REGEX를 사용할 수 있나요?그렇다면 위에 표시된 변환을 수행하는 데 어떻게 사용합니까? 그렇지 않은 경우 rename
REGEX를 사용하여 변환을 수행하는 올바른 방향을 알려주세요 .
답변1
for i in *.jpeg; do echo mv "$i" "${i%faculty*}faculty.jpeg" ; done
요구 사항을 충족하는 경우 삭제 echo
하여 파일 이름을 변경하세요.
내 시스템의 perl rename 명령에는 옵션만 있습니다.-v -f -n
$ rename -n 's/faculty\K.*(?=\.jpeg)//' *.jpeg
art-faculty-3_29060055362_o.jpeg renamed as art-faculty.jpeg
art-history-faculty-2016-2017-1_29060057642_o.jpeg renamed as art-history-faculty.jpeg
fine-arts-division-faculty-2016-2017-5_29165851925_o.jpeg renamed as fine-arts-division-faculty.jpeg
music-faculty-2016-2017-1_29132523816_o.jpeg renamed as music-faculty.jpeg
theatre-faculty-2016-2017-1_29132529356_o.jpeg renamed as theatre-faculty.jpeg