Linux 에서 파일의 이름을 변경하기 위해서는 mv 명령어를 사용합니다만,


여러 개 파일의 이름을 한번에 변경하기 위해서는 rename 명령어를 사용하는 것이 더 편합니다.


rename 은 perl 스크립트로 작성된 명령어입니다. perl 이 설치되어 있지 않다면 실행할 수 없습니다.



Man 페이지의 내용은 다음과 같습니다.


NAME

       rename - renames multiple files


SYNOPSIS

       rename [ -v ] [ -n ] [ -f ] perlexpr [ files ]


DESCRIPTION

       "rename" renames the filenames supplied according to the rule specified as the first argument.  The perlexpr argument is a Perl expression

       which is expected to modify the $_ string in Perl for at least some of the filenames specified.  If a given filename is not modified by the

       expression, it will not be renamed.  If no filenames are given on the command line, filenames will be read via standard input.


       For example, to rename all files matching "*.bak" to strip the extension, you might say


               rename 's/\.bak$//' *.bak


       To translate uppercase names to lower, you'd use


               rename 'y/A-Z/a-z/' *


OPTIONS

       -v, --verbose

               Verbose: print names of files successfully renamed.


       -n, --no-act

               No Action: show what files would have been renamed.


       -f, --force

               Force: overwrite existing files. 



정규표현식을 이용해야 한다는 점이 마음에 걸리지만 간단한 정도로 사용하면 유용하게 쓸 수 있습니다.


# ls

readme_1.txt  readme_10.txt  readme_2.txt  readme_3.txt  readme_99.txt

#

# rename 's/readme_/readme_0/' readme_?.txt

# ls

readme_01.txt  readme_02.txt  readme_03.txt  readme_10.txt  readme_99.txt

#

# rename 's/txt/html/' ./*

# ls

readme_01.html  readme_02.html  readme_03.html  readme_10.html  readme_99.html

#