GUI 라면, 그 이름도 유명한 Total Commander, 그의 추종자(?) Double Commander 를 사용하면 간단하지만, Commandline 으로 하기엔 딱히 떠오르는게 없다.
그도 그럴 것이, 이 작업을 그리 자주하는게 아니고, 더더군다나 CLI 로는 더더욱 할 일이 적기 때문이다.
그럼에도, 이에 관한 글을 몇번이나 썼었다.
이게 필요한 때는, 우분투 판올림을 했을 때, 기존 파일들을 새 판에 복사하고 난 뒤 정리하는 작업에선데, 2년에 한번 하는 일이라 기억하고 있을 리가 만무하다고나 할까.
오늘을 기회로 다시 한번 기억해보는 시간이 되기 바라며..
이거다 저거다 마시고, 딱 하나 rename
만을 기억하면 되겠다.
이 프로그램은 우분투엔 기본 설치는 돼 있지 않다.
sudo apt install rename
rename.ul 이란 프로그램은 기본으로 찾을 수 있지만, 이건 Regex 를 지원하는지 아닌지 확실하질 않다. rename 은 Perl Regex 를 지원하므로, 좀 더 사용하기가 편하다.
** Man Page 수정
예전 글에서 Man Page 오류 때문에 고생했던 얘기가 써 있는데, 지금 확인해보니 제대로 고쳐져 있다.
예전 : rename ‘s/\e.bak$//’ *.bak
현재 : rename ‘s/.bak$//’ *.bak
쓸데없이 \e 가 들어가 있어서 한참을 헤맸었다. (고 쓰여있다. 기억은 안난다. ㅎㅎ)
사용법
sed 문법과 유사하다.
#문법 rename 's/찾을말/바꿀말/' 파일 #용례 rename -n 's/bionic/focal/' *bionic.list
-n 은, 실제로 바꾸지는 않고 미리 결과를 보여주기만 한다.
rename -n 's/bionic/focal/' *bionic.list rename(cybermax-dexter-ubuntu-sdl2-backport-bionic.list, cybermax-dexter-ubuntu-sdl2-backport-focal.list) rename(deluge-team-ubuntu-stable-bionic.list, deluge-team-ubuntu-stable-focal.list) rename(graphics-drivers-ubuntu-ppa-bionic.list, graphics-drivers-ubuntu-ppa-focal.list) rename(libreoffice-ubuntu-ppa-bionic.list, libreoffice-ubuntu-ppa-focal.list) rename(mc3man-ubuntu-mpv-tests-bionic.list, mc3man-ubuntu-mpv-tests-focal.list) rename(papirus-ubuntu-papirus-bionic.list, papirus-ubuntu-papirus-focal.list)
파일명을 잘못 바꾸면 짜증나는 오류를 야기할 수도 있으므로, 미리 확인해보고 작업해야만 한다.
마지막으로, rename 에는 디렉토리를 탐색하는 기능(Recursive)은 없으므로, find 와 조합하여 사용하면 더더욱 강력해진다.
$ find . -iname 'aaa.txt' -exec rename 's/aaa/bbb/' {} +
이 역시 rename -n
으로 먼저 시험해보고 나서 실행해야, 돌아올 수 없는 강(또는 무지하게 어렵고 짜증나는)을 건너버린 실수를 막을 수 있다.