我有一个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
在查找行之后,它可以工作,但我会再次选择“在线”替换。
任何建议表示赞赏。