mv
한 가지 일을하고 잘 수행하도록 설계된 기본 명령 줄입니다 (Unix 철학) : 파일 이동 또는 directorie .
대상 문자열을 해킹 STDOUT& STDIN¹하여 즉시 수정할 수 있지만 스마트 해킹 은 아닙니다.
이름 바꾸기 (펄의 것)
이름이 같은 다른 도구가있을 수도 있고 그렇지 않을 수도 있으므로주의하십시오.
사람들이에 대해 이야기 할 때 rename, 우리는 이것에 대해 생각 ELF합니다.
기본이 아닙니다. Perl입니다. Perl의 일부 기능을 내부에 전달할 수 있으며 매우 강력합니다.
이 예제를 고려하십시오.
당신은 같은 파일의 이름 을 바꾸고 싶습니다
foobar_1.txt
foobar_2.txt
foobar_3.txt
다음과 sprintf()같이 숫자 앞에 0을 붙일 수 있습니다 (regex, heh, Perl : D 사용).
rename 's/(\d+)/sprintf("%04d", $1)/e' foobar_*.txt
이제 당신은 :
foobar_0001.txt
foobar_0002.txt
foobar_0003.txt
실제로 기본 명령이 아닙니까?
rename 은 실제로 dir (s) 을 이동 하도록 설계되지 않았지만 수행 할 수 있습니다.
$ mkdir -p /tmp/foo/bar/base
$ touch /tmp/foo/bar/base/file
$ rename 's!/tmp/foo/bar/base/file!/tmp/file!' /tmp/foo/bar/base/file
이동 된 파일
/tmp/file
¹ *.stackexchange.*웹 사이트에서 볼 수있는 코드

for FILE in `ls *.txt`
do
mv ${FILE} `echo ${FILE} | sed 's/anything_ugly/anything_still_ugly/'`
done
가는 길이 아니며, 버그가 많으며, 적절한 순간에 올바른 도구를 사용하는 이유를 설명하기 만합니다.
type -a rename과rename --version?