はじめに
タイトルどおりなのですが、指定フォルダ内のファイルのファイル名にあるカッコつき数字、例えば(1)や(2)、(3)…といったものですが、それを一度に消すスクリプトをPython3で作成しましたので紹介します。
具体的には例えば「test(2).txt」といったファイル名があったら「test.txt」にするというものです。これをファイルごとでなくフォルダ内のファイルに一括で処理します。
スクリプト
このスクリプトに「test.py」などと名前を付けて保存します。名前はなんでもいいです。
#!/usr/bin/env python # coding: UTF-8 import sys import os import re #引数の取得 argvs = sys.argv argc = len(argvs) #引数が無い場合は終了 if (argc != 2): print ('引数にフォルダ名を入力') quit() #ディレクトリ dir = argvs[1] #フォルダ内のファイルを取得 files = os.listdir(dir) for file in files: pattern = re.compile("\([0-9]+\)") #カッコつきファイル名でなければスキップ if pattern.search(file)==False: continue #カッコつき数値を消す new_file = re.sub("[\(|(][0-9]+[\)|)]","",file) new_path = dir+"\\"+new_file #既に存在するファイルの場合スキップ if os.path.exists(new_path): continue #ファイル名を置換する print (new_file) os.rename(dir+"\\"+file,new_path )
基本的にはコメントにある通りのことをしています。正規表現でカッコつきの数字を持つファイルを探しますが、このとき、半角だけでなく全角のカッコも一応探します。対象が見つかったらそれを置換で消してリネームするという処理をフォルダ内のファイルを対象として実行します。
実行方法
Pythonのインストール方法は省略します。
Windowsであればコマンドプロンプト、Ubuntuであればターミナルを開きます。多分Windows以外でも動くと思いますが、私はWindows7でしか動作確認はしていません。
対象となるファイルが入ったフォルダ(ディレクトリ)まで「cd」を駆使して移動します。そのフォルダをデスクトップ下の「target」という名前のものとしてカレントディレクトリがデスクトップだとすると下記のようにコマンドを打ちます。
C:\Users\gagambo\Desktop>python test.py target
test.pyは先ほど作成したスクリプトです。引数でtargetというフォルダ名を渡しています。これでtargetフォルダ以下のファイル名を一括でリネームします。