jiro4989
12/17/2017 - 6:30 AM

ファイル名に含まれる数字を0埋めしてリネームするスクリプト(powershell, python, go)

ファイル名に含まれる数字を0埋めしてリネームするスクリプト(powershell, python, go)

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

import os, re

def main():
    for f in os.listdir("dummy"):
        num = re.search(r"(\d+)", f).group(1)
        of = "dummy/" + f
        nf = "dummy/dummy{0:03d}.zip".format(int(num))
        try:
            os.rename(of, nf)
            print(of, " >> ", nf)
        except:
            print(u"リネーム前と後が同じです。", nf)

if __name__ == '__main__':
    main()

$dir = "dummy"
$reg = [regex]"(\d+)"
ls $dir | % {
  $name = $_.Name
  $num = $reg.Matches($name)[0].Value
  $padnum = $num.PadLeft(3, "0")
  mv "$dir\$name" "$dir\dummy$padnum.zip"
}
ls "dummy"
package main

import (
	"fmt"
	"io/ioutil"
	"log"
	"os"
	"path/filepath"
	"regexp"
)

func init() {
	log.SetFlags(log.Ldate | log.Ltime | log.Lshortfile)
}

func main() {
	dirName := "dummy"
	// ディレクトリ配下のすべてのファイルの取得
	files, err := ioutil.ReadDir(dirName)
	if err != nil {
		log.Fatal(err)
	}

	re := regexp.MustCompile(`(\d+)`)
	for _, f := range files {
		// 取得したファイルのパスの取得
		fn := f.Name()
		fp := filepath.Join(dirName, fn)

		// ファイルの番号の取得
		m := re.FindString(fn)
		// 0埋めしたファイル名を取得
		nfn := fmt.Sprintf("dummy%03s.zip", m)
		// 0埋めファイルパスの取得
		nfp := filepath.Join(dirName, nfn)

		// ファイルのリネーム
		err := os.Rename(fp, nfp)
		if err != nil {
			log.Fatal(err)
		}
		fmt.Println(fp, " >> ", nfp)
	}
}