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