현재 디렉토리에서 특정 확장자를 가진 모든 파일의 이름을 다른 확장자로 바꾸려면 어떻게 해야 합니까?

현재 디렉토리에서 특정 확장자를 가진 모든 파일의 이름을 다른 확장자로 바꾸려면 어떻게 해야 합니까?

가능한 중복:
여러 파일 이름 바꾸기(확장자 변경)

현재/작업 디렉토리에 5개의 파일이 있다고 가정해 보겠습니다.

file1.xvg
file2.xvg
file3.xvg
file1.eps
file2.eps

현재/작업 디렉토리에 있는 모든 파일의 이름을 확장자로 바꿀 수 있는 방법이 있습니까?.xvg그리고 그들에게 새로운 확장명을 제공하십시오.txt(떠나서.주당 순 이익파일만)? rename, mv또는 아마도 이 작업을 수행할 수 있습니까 mmv? 저는 우분투 리눅스를 사용하고 있습니다. 감사해요!

답변1

특정 질문에 대해서는 이 명령이 작동합니다. 제안된 이름 변경이 만족스러운지 확인한 다음 삭제하여 -n작업을 계속 진행하세요.

rename -n 's/\.xvg$/.txt/' *.xvg

이는 기본적으로 현재 디렉토리에서 확장자를 가진 모든 파일에 대해 ( )로 .xvg끝나는 파일을 찾아 이름의 해당 부분을 로 변경하는 것을 의미합니다 .$.xvg.txt

자세한 내용과 예는 아래에 있습니다.


예, rename명령이 이 작업을 수행합니다. 디렉토리의 다른 파일을 무시하고 .html확장자를 가진 모든 파일의 이름을 바꾸는 간단한 예입니다 ..html_bak

나는강하게-n명령줄 옵션을 사용하는 것이 좋습니다첫 번째(아래 설명 참조) 실제 명령을 실행하기 전에 어떤 변경 사항이 발생하는지 확인하세요.

내가 시작하는 것:

$ ls
a.html  a.txt  b.html  htmlfile

"시험 실행"을 수행하는 수단 -n입니다.. 무엇이 변경될지 보여주고 아무것도 변경하지 마세요!

$ rename -n 's/\.html$/.html_bak/' *
a.html renamed as a.html_bak
b.html renamed as b.html_bak

아직 원본 파일이 남아있습니다.

$ ls
a.html  a.txt  b.html  htmlfile

이제 실제로:

$ rename  's/\.html$/.html_bak/' *

파일 이름이 변경되었습니다.

$ ls
a.html_bak  a.txt  b.html_bak  htmlfile

위의 예에서는 *이름 바꾸기 작업에 고려할 파일을 지정하는 데 사용했습니다. ..html*.html

자세한 내용은 이름 바꾸기 매뉴얼 페이지를 참조하세요.

답변2

이는 다음과 같이 수행할 수 있습니다.

rename 's/xvg$/txt/' *.xvg

glob 패턴은 *.xvg파일만 영향을 받도록 합니다.

관련 정보