灰中查找命令中的多个字符串替换

时间:2013-11-22 19:41:53

标签: string replace find

我有一个shell脚本,可以让我建立一个包含所有音乐的列表。在Synology NAS中运行3.2.40 GNU / Linux。

以下是我的想法(工作正常):

  

#!/ bin中/灰      OutputPath = / VOLUME1 / MYFILES /扫描/      AudioFileList = 'ListMusic.txt'      AudioPath = / VOLUME1 /音乐/      SkipAlwaysPath ='(-path' / #recycle '-path' /。'-path' @ ')'      SkipAlwaysFiles ='(-iname'thumbs.db *' - o -iname' .htm'-o -iname' .html'-o -iname'* .nfo')'

     

找到$ AudioPath -type f! $ SkipAlwaysPath! $ SkipAlwaysFiles -iname'* .txt'> $ $ OutputPath AudioFileList

结果如下所示:

/ volume1 / music / ABBA / Abba Song 1.mp3 / volume1 / music / ABBA / Abba Song 2.mp3 ...

我想从每行的开头删除字符串/ volume1 / music /。我已经尝试了一个有效的perl脚本:

  

/ usr / bin / perl -pi -e的// volume1 / music /// g'$ OutputPath- $ AudioFileList.txt

但是当我尝试用$ AudioPath替换硬编码路径时:

  

/ usr / bin / perl -pi -e's / $ AudioPath // g'$ OutputPath- $ AudioFileList.txt

它失败了(我不知道如何逃避变量中包含的正斜杠)。此外,我想要“在线”替换字符串,而不是扫描文件AFTER。我试图使用cut命令,或sed,但没有设法得到很远。

此外,我想将文件从Unix转换为DOS。我试过添加

  

/ usr / bin / perl -pi -e's / \ r \ n | \ n | \ r \ n \ r \ n / g'$ OutputPath $ AudioFileList

在查找行之后,它可以工作,但我会再次选择“在线”替换。

任何建议表示赞赏。

0 个答案:

没有答案