확장자를 유지하면서 많은 파일에 접미사 추가

확장자를 유지하면서 많은 파일에 접미사 추가

~/mydir/많은 파일이 포함된 디렉토리가 있습니다. 이 파일 중 일부는

~/mydir/foo.py
~/mydir/foo.tex
~/mydir/foo.pdf
~/mydir/foo.log

~/mydir/기본 이름을 가진 파일 foofoo-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

관련 정보