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

作者: weakstudy (台灣高階管理人)   2017-08-15 16:03:23
小弟剛接觸Linux下的Ubuntu系統,用的是Bash,
話說某天,某個學長經過我的座位看我一個檔點一下後,按F2,再更改檔名,
然後換下一個,他看了我改了五、六個檔吧,
終於受不了了,「學弟啊!這種東西,你寫個Bash就可以在30秒內搞定它了!」,
我眼睛發光的看著他,但是他在趕論文,隨手指著一個同學(女的)學姐,
她也會寫Bash,不會的請教她,
然就就飄回自已的座位寫論文了,
真的是「飄」回去 … 好像剛才那一段對話從來沒有發生過,
學姐也看都沒看我一眼,
我 … 好想寫個「慘」字 …
好了,前情提要就是這樣 …
接下來就是我現在面對的情況:
我有個資料夾…就叫它「OnePiece」吧
裡面有…
「海賊王 第1集 繁體中文翻譯.mp4」
「海賊王 第2集 繁體中文翻譯.mp4」
「海賊王 第3集 繁體中文翻譯.mp4」
「海賊王 第4集 繁體中文翻譯.mp4」
「海賊王 第5集 繁體中文翻譯.mp4」

「海賊王 第51集 繁體中文翻譯.mp4」
「海賊王 第52集 繁體中文翻譯.mp4」
「海賊王 第53集 繁體中文翻譯.mp4」
「海賊王 第54集 繁體中文翻譯.mp4」
「海賊王 第55集 繁體中文翻譯.mp4」

「海賊王 第796集 繁體中文翻譯.mp4」
「海賊王 第797集 繁體中文翻譯.mp4」
「海賊王 第798集 繁體中文翻譯.mp4」
「海賊王 第799集 繁體中文翻譯.mp4」
「海賊王 第800集 繁體中文翻譯.mp4」

因小弟Bash功力低淺,故特來網上求教各高手、神級人物,是否可以寫一個Bash幫忙更改
檔名的呢?
但希望是集數的數字可以留下來,
也就是如「海賊王 第800集 繁體中文翻譯.mp4」可以變成「OnePiece v800.mp4」?
久聞PTT高手如雲,又願意伸出援手,小弟這次真心想要請求幫忙,如不嫌棄,請助小弟
一臂之力!
小弟將來實力長成,必像大眾高手一樣儘力不計酬勞幫忙真心需要幫忙之人!
成謝再三!
作者: longlongint (華哥爾)   2017-08-18 22:46:00
for 迴圈搭配硬尻檔名就可以了 只是沒有很通用XD
作者: weakstudy (台灣高階管理人)   2017-08-15 16:09:00
對不起,打字錯誤!最後一行字是「感謝再三」!小弟現在的感覺就是和「絕望幽靈」比絕望輸了的感覺!人生無望!
作者: brli7848 (無理阿?)   2017-08-15 16:21:00
Dolphin內建批量重新命名
作者: bibo9901 (function(){})()   2017-08-15 16:49:00
rename 's/賊王 第800集 繁體中文翻譯/OnePiecev800/' *啊…看錯XDD
作者: hijkxyzuw (i,j,k) ×(x,y,z)   2017-08-15 16:55:00
rename -e 's/^.+(\d+).+\.mp4/OnePiece v$1.mp4/' *
作者: dou0228 (7777)   2017-08-15 22:00:00
有種看到某位博士發言的感覺
作者: weakstudy (台灣高階管理人)   2017-08-15 22:18:00
hijkxyzuw高手的解法太過高深…願意給小弟解釋一下嗎?
作者: HamalAri (哈馬‧阿里)   2017-08-15 23:41:00
rename 要小心版本可能不同util-linux/ util-linux-ng /perl 提供的不太一樣
作者: grayStone (灰色石頭)   2017-08-16 04:13:00
regex
作者: kenduest (小州)   2017-08-16 20:23:00
我系統的 rename 就不吃 -e 參數若支援的話的確很好用,一行簡單單純語法可搞定
作者: carylorrk (carylorrk)   2017-08-21 15:01:00
for i in `seq 1 800`; do mv *$i* v$i.mp4; done
作者: rickieyang (Rickie Yang)   2017-08-24 00:59:00
樓上你第一次進迴圈, 就把檔名裡有 1 的都抓出來鞭了第1集 第10集 第1x集 第21集 第1xx集 ...

Links booklink

Contact Us: admin [ a t ] ucptt.com