~/mydir/
많은 파일이 포함된 디렉토리가 있습니다. 이 파일 중 일부는
~/mydir/foo.py
~/mydir/foo.tex
~/mydir/foo.pdf
~/mydir/foo.log
~/mydir/
기본 이름을 가진 파일 foo
을 foo-bar
.
~/mydir/foo-bar.py
~/mydir/foo-bar.tex
~/mydir/foo-bar.pdf
~/mydir/foo-bar.log
새 파일 이름이 기존 파일과 충돌하는 것에 대해 걱정하지 않습니다( $ ls ~/mydir/foo-bar*
아무것도 반환되지 않음).
Bash에서는 이 작업을 수행하기가 쉬울 것 같지만 이해가 되지 않습니다.
이 작업을 수행하는 간단한 스크립트가 있습니까?
답변1
배포판이 perl 버전의 이름 바꾸기를 사용(또는 제공)하는 경우(Debian 및 대부분의 파생 버전이 이를 수행함):
cd mydir
rename 's/\.([^.]+)$/-bar.$1/
나는 일부 배포판(어떤 배포판이 기억나지 않음)을 prename
.
답변2
이는 다음을 통해 수행할 수 있습니다 mv
.
for name in ./foo*; do mv "$name" "${name/foo/foo-bar}"; done
예를 들어:
[devuser@machine test]$ touch foo.log foo.pdf foo.tex foo.py
[devuser@machine test]$ ls
foo.log foo.pdf foo.py foo.tex
[devuser@machine test]$ for name in ./foo*; do mv "$name" "${name/foo/foo-bar}"; done
[devuser@machine test]$ ls
foo-bar.log foo-bar.pdf foo-bar.py foo-bar.tex