Re: [问题] Linux下Bash批次更改档名(数百、千个档)

楼主: Vett (Vett)   2017-08-15 16:37:36
※ 引述《weakstudy (台湾高阶管理人)》之铭言:
: 小弟刚接触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高手如云,又愿意伸出援手,小弟这次真心想要请求帮忙,如不嫌弃,请助小弟
: 一臂之力!
: 小弟将来实力长成,必像大众高手一样尽力不计酬劳帮忙真心需要帮忙之人!
: 成谢再三!
伸手党还写了这么长...
#!/bin/bash
for i in `ls`; do
NUM=`echo $i|sed -n 's/.*第\(.*\)集.*/\1/p'`
mv $i "OnePiece v$NUM.mp4"
done
作者: kenwufederer (Nash)   2017-08-15 16:40:00
真是好心人…
作者: CMJ0121 (请多指教!!)   2017-08-15 16:51:00
然后就会出事情了... $i 没有用双引号包起来
作者: hijkxyzuw (i,j,k) ×(x,y,z)   2017-08-15 16:55:00
你其实想陷害他对吧mv "$i" "OnePiecev$NUM.mp4" 才对
楼主: Vett (Vett)   2017-08-15 17:28:00
顺手打的 打错了不好意思啊 哈哈
作者: weakstudy (台湾高阶管理人)   2017-08-15 22:24:00
对不起!小弟Linux新手,望各位高手海涵! ^^"
作者: HamalAri (哈马‧阿里)   2017-08-15 23:47:00
感觉用""包起来还是很不保险, 比如要是档名有";然后`ls` 这边也可能会炸; NUM 也可能会炸太多需要 escape 的字符了
作者: weakstudy (台湾高阶管理人)   2017-08-16 00:30:00
谢谢各位前辈的教导,在下会继续努力的! 谢谢! ^^
作者: losepacific (Losepacific)   2017-08-16 01:19:00
最近在处理一个资料夹下有约一百四十万个图档的分类一开始因为在windows下,所以选用了Photos2Folders跑了四天之后,遇到Win10爱的更新,程式被中断了,目前在用cygwin掺msys2然后先用find或ls -U之后,把档名透过管线喂给xargs或while read之类的处理。
作者: hijkxyzuw (i,j,k) ×(x,y,z)   2017-08-16 09:21:00
变量代换后,不会侦测特殊字符,除了空格的分词。例如 to_null='>/dev/null' ; ls $to_null会变成列出名为 '>/dev/null' 的档案,而非重导向。
作者: bamchisu (suchi)   2017-08-16 21:06:00
$i要用双引号=> ${i}

Links booklink

Contact Us: admin [ a t ] ucptt.com