Re: [問題] Linux下Bash批次更改檔名(數百、千個檔)

看板Linux作者 (小州)時間8年前 (2017/08/16 20:34), 8年前編輯推噓3(307)
留言10則, 5人參與, 最新討論串4/6 (看更多)
我貢獻一下 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

08/16 21:07, , 1F
這東西BASH就可以簡單解決了,用不到python
08/16 21:07, 1F

08/16 21:13, , 2F
當然,用 python 只是剛好手癢而已 XD
08/16 21:13, 2F

08/16 21:14, , 3F
目前系統管理上複雜我用 python, 單純我用 bash script
08/16 21:14, 3F

08/16 21:15, , 4F
就像是以前多台主機同時 ssh 要跑更新,以前是用
08/16 21:15, 4F

08/16 21:15, , 5F
bash 用 for 來跑 ssh 來多個連線達成某個命令執行
08/16 21:15, 5F

08/16 21:16, , 6F
目前可用 ansible (也是python) 程式直接達成類似需求
08/16 21:16, 6F

08/17 01:02, , 7F
08/17 01:02, 7F

08/17 05:22, , 8F
推薦文章!
08/17 05:22, 8F

08/17 20:49, , 9F
這篇會不會像程式版某篇文長出各種語言的版本XD
08/17 20:49, 9F

08/18 09:28, , 10F
go lang 已經有人寫了 XD
08/18 09:28, 10F
※ 編輯: kenduest (122.117.155.17), 08/18/2017 09:57:37
文章代碼(AID): #1Pb3lZUy (Linux)
文章代碼(AID): #1Pb3lZUy (Linux)