Linux에서 부울 "|"을 사용하는 정규식을 사용하여 심볼릭 링크 이름 바꾸기

Linux에서 부울 "|"을 사용하는 정규식을 사용하여 심볼릭 링크 이름 바꾸기

세 개의 아이콘이 있습니다.노트(기호 링크 아님), 천문학(기호 링크) 및 gnome-astronomy(기호 링크)입니다.

ls -l 
astronomy.svg -> celestia.svg
gnome-astronomy.svg -> konquest.svg
notte.svg

이 두 심볼릭 링크의 이름을 notte로 바꾸고 싶습니다. 다음과 같아야 합니다.

ls -l 
astronomy.svg -> notte.svg
gnome-astronomy.svg -> notte.svg
notte.svg

명령은 다음 rename과 같습니다:

rename -s 'celestia' -- 'notte' *.svg

"|"와 함께 정규식을 사용하여 명령을 실행하고 싶지만 작동하지 않습니다. 다음과 같습니다.

rename -s -n 'konquest\|celestia' -- 'notte' *.svg 
rename -s -n 's/konquest\|celestia/notte/g' *.svg 
rename -s -n 's/\(konquest\|celestia\)/notte/g' *.svg 

이 경우는 심볼릭 링크가 없고 -s파일이 심볼릭 링크가 아닌 경우에만 작동합니다.

답변1

rename이 패키지의 유틸리티는 정규 표현식과 정규 표현식을 이해하지 못하지만 스위치는 이해하는 것으로 util-linux알려져 있습니다 .rename.ul-n-s

다음을 사용하여 루프에서 기호 링크 대상의 이름을 바꿀 수 있습니다.

for i in konquest celestia; do
    rename.ul -s "$i" notte *.svg
done

Perl rename스크립트는 정규식 및 을 이해 -n하지만 심볼릭 링크 대상의 이름을 바꿀 수는 없습니다.

답변2

rename -s -n 's/konquest|celestia/notte/g' *.svg 

관련 정보