나한테 전화한 게 있어
abc-10.5.3.1-1.x86_64.rpm
abc-compiler-10.5.3.1-1.x86_64.rpm
abc-10.5.3.1-6.x86_64.rpm
abc-compiler-10.5.3.1-6.x86_64.rpm
파일을 빌드할 때 부 버전 번호(1-1 및 1-6)를 제거하고 싶습니다. Redhat Linux에서 rename 명령을 사용하여 이를 달성하는 방법을 모르겠습니다. 생성된 파일 이름은 다음과 같아야 합니다.
abc-10.5.3.x86_64.rpm
이 명령은 정규식을 사용하지 않습니다.
답변1
zsh 사용에 대한 대안을 고려하고 싶다면 다음 rename
과 같이 작성하겠습니다.
autoload -U zmv
zmv -n '(*).<->-<->(.[^.]##.rpm)' '$1$2'
(행복하면 삭제 -n
).
답변2
당신 rename(1)
이 이렇다면이 페도라 모자당신이 하고 싶은 일이 효과가 없을 것 같아요.
다음이 필요한 방법이 있습니다 bash
.
( shopt -s extglob
for f in ./*-+([.[:digit:]])-+([[:digit:]]).x86_64.rpm; do
mv -v -- "$f" "${f%-+([[:digit:]]).x86_64.rpm)}.x86_64.rpm"
done )
이 +([.[:digit:]])
부분은 메이저/마이너 버전 번호를 일치시키는 데 사용되고, +([[:digit:]])
다음 부분 -
은 삭제하려는 패치 번호를 일치시키는 데 사용됩니다.
POSIX를 사용하면 덜 정확한 작업을 수행할 수도 있습니다 sh
.extglob
for f in ./*-*-*.x86_64.rpm; do
mv -v -- "$f" "${f%-*.x86_64.rpm}.x86_64.rpm"
done