我正在尝试更改大量 m3u 文件中的路径。我知道我可以使用 regexxer fe 来做到这一点,但我正在尝试学习 bash。
这是我弄清楚的命令,但它不起作用。
grep -lr -i -e 'M:\\' * | xargs -0 sed -i 's/M:\\/T:\\/g'
我怀疑,但只是怀疑,这是由于文件名中的特殊字符造成的。如何处理?
答案1
最后我找到了答案:
grep -lr -i -Z -e 'm:\\' * | xargs -0 sed -i 's/M:\\/K:\\/g'
我必须添加 -Z 以确保读取每个文件名,而不是将整个文件名读取到一个长字符串中。
答案2
这招奏效了:
在 Ubuntu 中将Windows 路径更改M:\
为挂载点media/MODERNE MUZIEK
find -iname '*.m3u' -print0 |
xargs -0 sed -i 's/M:\\//\/media\/MODERNE\ MUZIEK\//g'
将反斜杠改为正斜杠
find -iname '*.m3u' -print0 | xargs -0 sed -i 's/\\/\//g'
现在我可以用 Ubuntu 中的 VLC 播放器打开我以前的 Windows m3u 文件。
无论文件名中有多少空格或奇怪的字符,它都可以播放。
可以改进吗?可以grep
像我第一次失败的尝试一样,使它具有条件性吗?为什么 grep 不起作用?
感谢您的意见。