输入
我有一个播放列表文件似乎
#file 1: i.m3u
C:UserscurlyweiMusic........a.mp3
C:UserscurlyweiMusic........b.mp3
#file 2: j.m3u
C:UserscurlyweiMusic........x.mp3
以上文件位于同一文件夹中。
预期输出
#file 1: i.m3u
~/Desktop/Music/......./a.mp3
~/Desktop/Music/......./b.mp3
#file 2: j.m3u
~/Desktop/Music/......./x.mp3
命令我做
for i in $(ls *.m3u| tr 'n' ' '); do sed 's##/#g' -e 's#C:/Users/curlywei/Music#~/Desktop/music#g' $i; done
实际结果
#file 1: i.m3u
C:/Users/curlywei/Music/......../a.mp3
C:/Users/curlywei/Music/......../b.mp3
#file 2: j.m3u
C:/Users/curlywei/Music/......../x.mp3
只有被
/
取代
类似于:
for file in *.m3u; do
printf "%sn" '1,$s!/^C:\Userscurlywei!~/Desktop!` '1,$s!\!/!g' w | ed -s "$file"
done
对于每个文件,用ed
(文件编辑器,而不是流编辑器sed
(打开它,在每一行上,首先替换前导路径,然后用正斜杠替换所有反斜杠,最后保存文件。
查看for f in $(ls *.mp3)
错误的原因。