我正在使用迭代bash脚本构建“m3u”播放列表。一旦m3u文件中包含了其中列出的曲目,如何在附加时使用该文件作为过滤器来排除现有曲目?
您可能已经知道,m3u播放列表只是一个文件指针列表。
例如,让我们说你有" myplaylist.m3u"用这些歌曲:
/path/a_fine_frenzy/bomb_in_a_birdcage/06_-_a_fine_frenzy_-_swan_song.mp3
/path/a_fine_frenzy/one_cell_in_the_sea/06_-_a_fine_frenzy_-_almost_lover.mp3
/path/a_fine_frenzy/bomb_in_a_birdcage/07_-_a_fine_frenzy_-_elements.mp3
/path/a_fine_frenzy/one_cell_in_the_sea/07_-_a_fine_frenzy_-_think_of_you.mp3
您现在想继续追加" myplaylist.m3u"使用可能包含上述歌曲的其他搜索,但您不希望再次添加它们。那么如何排除未来搜索中列出的文件?
您的搜索通常可能是:
find /home/username/Music/ -type f -iname "*.mp3" >> myplaylist.m3u
答案 0 :(得分:1)
使用find
grep
的结果
find /home/username/Music/ -type f -iname "*.mp3" | grep -vxf myplaylist.m3u >> myplaylist.m3u
标志说明:
-f file
使用file
-x
匹配整行-v
反转逻辑:打印不匹配的行,而不是匹配因此,grep
只会输出尚未包含在文件中的find
行。