간단한 bash 질문입니다

스프링의 이미지

abc001 ~ abc500 이라는 500개의 파일이 있습니다

이들을 숫자 제외하고 앞에 abc부분만 def 로 파일명을 바꾸고 싶은데 (def001~def500 이 되도록이요)

mv abc* def*
rename abc* def*

등등 해봐도 동작하지 않네요

정규식으로 처리하려 해도 숫자 부분을 변수로 받아서 그대로 넘겨주는 부분을 어떻게 해야 할지 모르겠습니다

파이썬 스크립트를 짜서 할 수 있긴 하지만, 예상보다 이런 작업이 자주 나와 bash 한 줄로 처리할 수 있는 좋은 방법이 없을지 질문 드립니다

미리 감사합니다!

raymundo의 이미지

$ ls
abc001  abc002
$ rename abc def abc*
$ ls
def001  def002

근데 rename 이란 게 어느 시스템에서는 binary 실행파일이고 위와 같이 동작하는데 어디서는 정규식을 인자로 받는 펄 스크립트였고 그랬던 기억이 납니다. CentOS-7 에서는 위와 같이 동작하네요.

좋은 하루 되세요!

스프링의 이미지

아 마지막에 대상파일을 지정하는 부분이 한번 더 있군요.. 감사합니다!!

익명 사용자의 이미지

ㅎㅎ

for i in $(seq -w 1 500); do mv abc$i def$i; done

일반적으로는...

for f in abc*; do mv $f $(sed "s/^abc/def/" <<<$f); done