作者Vett (Vett)
看板Linux
標題Re: [問題] Linux下Bash批次更改檔名(數百、千個檔)
時間Tue Aug 15 16:37:36 2017
※ 引述《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
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 123.0.52.126
※ 文章網址: https://www.ptt.cc/bbs/Linux/M.1502786258.A.566.html
推 kenwufederer: 真是好心人… 08/15 16:40
→ CMJ0121: 然後就會出事情了... $i 沒有用雙引號包起來 08/15 16:51
→ hijkxyzuw: 你其實想陷害他對吧 08/15 16:55
→ hijkxyzuw: mv "$i" "OnePiecev$NUM.mp4" 才對 08/15 17:10
→ Vett: 順手打的 打錯了不好意思啊 哈哈 08/15 17:28
推 weakstudy: 對不起!小弟Linux新手,望各位高手海涵! ^^" 08/15 22:24
→ HamalAri: 感覺用""包起來還是很不保險, 比如要是檔名有";然後 08/15 23:47
→ HamalAri: `ls` 這邊也可能會炸; NUM 也可能會炸 08/15 23:48
→ HamalAri: 太多需要 escape 的字元了 08/15 23:48
→ weakstudy: 謝謝各位前輩的教導,在下會繼續努力的! 謝謝! ^^ 08/16 00:30
推 losepacific: 最近在處理一個資料夾下有約一百四十萬個圖檔的分類 08/16 01:19
→ losepacific: 一開始因為在windows下,所以選用了Photos2Folders 08/16 01:20
→ losepacific: 跑了四天之後,遇到Win10愛的更新,程式被中斷了, 08/16 01:20
→ losepacific: 目前在用cygwin摻msys2然後先用find或ls -U之後,把 08/16 01:22
→ losepacific: 檔名透過管線餵給xargs或while read之類的處理。 08/16 01:22
推 hijkxyzuw: 變數代換後,不會偵測特殊字元,除了空格的分詞。 08/16 09:21
→ hijkxyzuw: 例如 to_null='>/dev/null' ; ls $to_null 08/16 09:22
→ hijkxyzuw: 會變成列出名為 '>/dev/null' 的檔案,而非重導向。 08/16 09:24
→ bamchisu: $i要用雙引號=> ${i} 08/16 21:06