Linux下Bash批次更改檔名(數百、千個檔) - Linux

Table of Contents


我貢獻一下 python code 提供參考:

# encoding: utf8

import os
import re
import sys

if len(sys.argv) == 2:
dest_path = sys.argv[1]
else:
sys.stderr.write("Usage: %s path\n\n" % os.path.basename(sys.argv[0]))
sys.exit(1)

if not os.path.exists(dest_path) or not os.path.isdir(dest_path):
sys.stderr.write("Error: %s not exist or not directory\n\n" % dest_path)
sys.exit(1)

pattern = r'^海賊王 第([0-9]+)集 繁體中文翻譯.mp4$'
for item in os.listdir(dest_path):
result = re.match(pattern, item)
if result:
old_name = os.path.join(dest_path, item)
new_name = os.path.join(dest_path, "OnePiece v%s.mp4" % result.group(1))
print("%s --> %s\n" % (old_name, new_name))
os.rename(old_name, new_name)


要使用的話把上面程式碼複製到編輯器內,記得排版要相同。比方儲存成為 script.py 好了
就使用 python script.py 這樣執行。程式會需要傳入一個參數當指定路徑,比方這樣用:

python script.py mydirname
python script.py /home/user/dirname

提供參考,謝謝

上面是比較多功能,可以指定目錄。若只有自己該層所在目錄下簡單改成:

# encoding: utf8

import os
import re

pattern = r'^海賊王 第([0-9]+)集 繁體中文翻譯.mp4$'
for item in os.listdir("."):
result = re.match(pattern, item)
if result:
os.rename(item, "OnePiece v%s.mp4" % result.group(1))

--
如果真的愛一個作業系統 怎能不害怕不再能使用它 而我們必須接受現實
於是長大了 寂寞就是沒有了機會再用它 比沒有電腦還要寂寞
而那些點亮我們生命的作業系統 就彷彿電影中發生在暹邏的愛情故事
即使短暫使用也會刻骨銘心

--

All Comments

John avatarJohn2017-08-20
這東西BASH就可以簡單解決了,用不到python
Liam avatarLiam2017-08-24
當然,用 python 只是剛好手癢而已 XD
Lydia avatarLydia2017-08-29
目前系統管理上複雜我用 python, 單純我用 bash script
David avatarDavid2017-09-02
就像是以前多台主機同時 ssh 要跑更新,以前是用
bash 用 for 來跑 ssh 來多個連線達成某個命令執行
Dinah avatarDinah2017-09-05
目前可用 ansible (也是python) 程式直接達成類似需求
Robert avatarRobert2017-09-05
Margaret avatarMargaret2017-09-06
推薦文章!
Jacob avatarJacob2017-09-09
這篇會不會像程式版某篇文長出各種語言的版本XD
Isla avatarIsla2017-09-09
go lang 已經有人寫了 XD