한번에 여러 파일명을 변경하고자 하는 경우가 있을 것이다.
이전에 rename명령을 통해 파일명을 일괄 변경하는 방법을 소개하였지만
이는 파일명이 제각각인 경우 원하는 형태로의 변경이 어렵다.
ex) qwer.c, asdf.c, zxcv.c 와 같은 경우
따라서 특정 format에 맞추어 파일이름을 변경하고, 확장자의 변경도 가능하며 파일 이름을 변경할 확장자를 지정할 수 있는
file_rename_tool을 개발해보았다.
send me email if you have any questions.
소스코드
import os, sys
import subprocess
### 상수 선언 ###
CONST_COMMAND = "ls" # 현재 디렉터리의 파일내역 출력
# Python에서 외부 명령어를 실행하고 결과를 가져오는 메소드
def getCallResult(CONST_COMMAND):
fd_popen = subprocess.Popen(CONST_COMMAND.split(), stdout = subprocess.PIPE).stdout
data = fd_popen.read()
fd_popen.close()
return data
# file이름을 일괄 변경하는 메서드
def file_rename(arg1, arg2, arg3):
fname = getCallResult(CONST_COMMAND)
fname = fname.decode("utf-8")
num = 1
while(True):
index = fname.find('\n')
if(index == -1):
break
filename = fname[:index]
fname = fname[index + 1:]
# 이 프로그램과 이름 변경대상이 아닌 확장자의 경우 변경대상에서 제외
if(filename.find('.' + arg3) == -1 or filename == 'file_rename.py'):
continue
cmd = "mv " + filename + ' ' + arg1 + str(num) + '.' + arg2
os.system(cmd)
num += 1
# argv[1] -> filename format
# argv[2] -> 확장자
# argv[3] -> 변경대상 확장자
file_rename(sys.argv[1], sys.argv[2], sys.argv[3])
file_rename_tool의 기본 사용법은
$ python3 file_rename_tool argv[1] argv[2] argv[3] 이다.
전달 인자는 차례로 변경할 파일이름 format, 변경할 확장자, 변경대상 확장자 이다.
사용 예제1
사용 예제2
PREVIOUSLinux Vim editor