作者kenduest (小州)
看板Linux
標題Re: [問題] Linux下Bash批次更改檔名(數百、千個檔)
時間Wed Aug 16 20:34:40 2017
我貢獻一下 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))
--
如果真的愛一個作業系統 怎能不害怕不再能使用它 而我們必須接受現實
於是長大了 寂寞就是沒有了機會再用它 比沒有電腦還要寂寞
而那些點亮我們生命的作業系統 就彷彿電影中發生在暹邏的愛情故事
即使短暫使用也會刻骨銘心
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 122.117.155.17
※ 文章網址: https://www.ptt.cc/bbs/Linux/M.1502886883.A.7BC.html
→ bamchisu: 這東西BASH就可以簡單解決了,用不到python 08/16 21:07
→ kenduest: 當然,用 python 只是剛好手癢而已 XD 08/16 21:13
→ kenduest: 目前系統管理上複雜我用 python, 單純我用 bash script 08/16 21:14
→ kenduest: 就像是以前多台主機同時 ssh 要跑更新,以前是用 08/16 21:15
→ kenduest: bash 用 for 來跑 ssh 來多個連線達成某個命令執行 08/16 21:15
→ kenduest: 目前可用 ansible (也是python) 程式直接達成類似需求 08/16 21:16
推 ddtsatan: 推 08/17 01:02
推 Debian: 推薦文章! 08/17 05:22
推 s8321414: 這篇會不會像程式版某篇文長出各種語言的版本XD 08/17 20:49
→ kenduest: go lang 已經有人寫了 XD 08/18 09:28
※ 編輯: kenduest (122.117.155.17), 08/18/2017 09:57:37