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

Frederic avatar
By Frederic
at 2017-08-16T20:34

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))

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

--
Tags: Linux

All Comments

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

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

Genevieve avatar
By Genevieve
at 2017-08-16T04:07
※ 引述《Vett (Vett)》之銘言: : ※ 引述《weakstudy (台灣高階管理人)》之銘言: : : 小弟剛接觸Linux下的Ubuntu系統,用的是Bash, : : 話說某天,某個學長經過我的座位看我一個檔點一下後,按F2,再更改檔名, : : 然後換下一個,他看了我改了五、六個檔吧, : ...

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

Brianna avatar
By Brianna
at 2017-08-15T16:37
※ 引述《weakstudy (台灣高階管理人)》之銘言: : 小弟剛接觸Linux下的Ubuntu系統,用的是Bash, : 話說某天,某個學長經過我的座位看我一個檔點一下後,按F2,再更改檔名, : 然後換下一個,他看了我改了五、六個檔吧, : 終於受不了了,「學弟啊!這種東西,你寫個Bash就可以在30 ...

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

Callum avatar
By Callum
at 2017-08-15T16:03
小弟剛接觸Linux下的Ubuntu系統,用的是Bash, 話說某天,某個學長經過我的座位看我一個檔點一下後,按F2,再更改檔名, 然後換下一個,他看了我改了五、六個檔吧, 終於受不了了,「學弟啊!這種東西,你寫個Bash就可以在30秒內搞定它了!」, 我眼睛發光的看著他,但是他在趕論文,隨手指著一個同學(女 ...

請問Markdown在引用文字中加粗體的語法

Franklin avatar
By Franklin
at 2017-08-14T15:33
最近把wordpress轉到 Hexo 去了 因為跟大多數的軟體一樣,Wordpress越來越肥... 現在正在練習markdown的語法 但是有個東西一直測試不出來,想請教各位看看 在markdown語法中,行首空四格可以把後面的文字作縮排 裡面的一些特殊符號都會被當作一般文字,不會被處理 但是我如果想 ...

ubuntu in usb一些問題

Genevieve avatar
By Genevieve
at 2017-08-13T13:08
我安裝的方法是用一個2GB的usb當作liveusb 裝在另一個64GB的usb上 我有先用gparted把64GB切成3部分: /dev/sdb1: 15(fat32) and#34;/dataand#34; , 一般資料儲存用 /dev/sdb5: 48(ext4) and#34;/and#34; , ...