Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- 게임보이
- 닌텐도스위치
- GOG
- 새턴
- fpga
- 패미컴
- 닌텐도
- MSX
- 3DS
- 게임기어
- mobilesuit
- analogue
- 컨트롤러
- 티스토리챌린지
- 메트로이드
- mister
- ps4
- 앙상블
- 슈퍼마리오
- 건담
- PC엔진
- ensemble
- Game Gear
- 모빌슈트
- Apple II
- Saturn
- 오블완
- 슈퍼패미컴
- snes
- 메가드라이브
Archives
- Today
- Total
Just a Blog
복수 개 파일에 대해 한꺼번에 파일이름의 확장자 바꾸기 본문
한 디렉토리에 여러 개의 파일이 들어 있는데, 그 파일 중 특정한 확장자를 가진 파일을 또 다른 확장자로 바꾸고 싶다고 하자. 어떻게 하면 될까? 그런 상황이 발생해서 해결 방법을 모색했다.
물론 가장 무식하지만 단순한 방법은 직접 파일 별로 하나씩 확장자를 바꾸는 것이다. 파일이 많은 경우 번거롭고 시간도 많이 걸리므로 이 방법은 패스.
또 한 가지의 방법으로, 예전에 만들었던 Python 코드를 뜯어 고쳐 프로그램을 하나 만들었다. 재미로 할 만 하지만 단순 변경 작업을 위해 별도의 프로그램을 만든다는 것이 비효율적인 것 같다. 물론 필요에 맞는 프로그램을 빨리 찾을 수 있다면 더 효율 좋은 방법이 될 수 있겠다.
import sys
import os
def ext_conv(cur_path, asis_ext, tobe_ext):
try:
files = os.listdir(cur_path);
except FileNotFoundError:
quit()
for f in files:
tgt_file = os.path.join(cur_path, f)
if os.path.isfile(tgt_file) and not f.startswith("."):
fname, fext = os.path.splitext(tgt_file)
if fext[1:] == asis_ext:
new_file = fname + '.' + tobe_ext
os.rename(tgt_file, new_file)
if __name__ == "__main__":
if len(sys.argv) == 3:
ext_conv(os.getcwd(), sys.argv[1], sys.argv[2])
else:
print("Usage: python ext_conv <as-is file ext> <to-be file ext>")
가장 좋은 방법은 인터넷/웹에서 검색을 하는 것이다. 검색해 보니 UNIX-like 환경에서 쉘 스크립트를 사용해서 간단히 하는 방법을 발견할 수 있었다. 이렇게 간단하고 좋은 방법이 있는데 바보짓을 했다. (아래의 예는 .txt 확장자 파일들을 .doc 확장자로 바꾸는 것)
# Rename all *.txt to *.doc
for file in *.txt; do
mv -- "$file" "${file%.txt}.doc"
done
(보너스) Windows에서는...? 그냥 다음과 같은 batch 파일을 하나 만들고 실행하면 된다. (아래의 예는 .txt 확장자 파일들을 .doc 확장자로 바꾸는 것)
ren *.txt *.doc
Comments