[问题] 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