[問題] 用Shell整理音樂檔

看板Linux作者 (潑潑)時間15年前 (2011/02/11 00:28), 編輯推噓2(208)
留言10則, 5人參與, 最新討論串1/1
之前土法煉鋼,用rhythmbox一個個的改資訊 趁年假摸一下bash,現在想寫個sh來做這些動作 但遇到了變數的問題 i=0; for list in *.mp3; do i=$(($i+1)); id3 -T "$i" $list; done 可是list歌單裡的歌名有空格,所以會出錯 因為檔名遇到空格要加\ 目前卡在這裡 有試過用rename或sed來把$list檔名取代成有\的字串 但還沒成功,我想我跟本是想錯方向了 請給我個指示吧,謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 221.120.65.248

02/11 01:04, , 1F
easytag
02/11 01:04, 1F
謝謝你的提議,我在google時也有找到 但我希望藉此情形順便練一下寫spript 軟體是最後的退路

02/11 05:15, , 2F
id3 -T "$i" "$list";
02/11 05:15, 2F
謝謝你,原來這麼簡單 突然間感覺我發了篇廢文… ...才剛說完簡單,就遇到瓶頸了 我mp3的檔名大概是這樣 05. Won't Go Home Without You.mp3 我想要把資訊裡的Title設為只有歌名的部分 也就是 Won't Go Home Without You 有想過用grep取出第一個空格到最後一個.的範圍 但怕如果有奇怪歌名讓grep誤判 有沒有像php的substr這種可以直接指定範圍的涵式? 直接指定 第4個字元 到 倒數第4個字元 就可以確定是歌名了

02/11 12:35, , 3F
cut
02/11 12:35, 3F

02/11 15:36, , 4F
... 不需要用到 cut ,bash 底下用 ${name:location} 就可
02/11 15:36, 4F

02/11 15:37, , 5F
ex: echo ${USER:1} 就跳掉第一個 char
02/11 15:37, 5F
我成功了,謝謝 請問${name:location}這類的用法,google的關鍵字怎麼下? 我找不到相關的教學 現在我是用${name:前面4個子元:檔名-副檔名-前4個字元} 我猜想是否有 前?個字元~後?個字元 這種寫法 只是google不知怎麼下關鍵字 ※ 編輯: Qiqi 來自: 221.120.73.221 (02/12 00:50)

02/12 06:11, , 6F
How about "Shell script string manipulation"
02/12 06:11, 6F

02/12 06:11, , 7F
我找到這個, 裡面有解答 http://goo.gl/v06M7
02/12 06:11, 7F

02/12 06:12, , 8F
不過我遇到這種都直接請出 Python 大神比較簡單XD
02/12 06:12, 8F

02/12 16:19, , 9F
大蟒蛇一票...
02/12 16:19, 9F

02/12 20:28, , 10F
man bash 找 string
02/12 20:28, 10F
文章代碼(AID): #1DL18GY9 (Linux)