我有以下命令:
find /home/cas/plex-media/series/ -type f -name '*.srt' | grep -v .en.srt
它将找到所有.srt
不在.en.srt
. 目录和子目录中的文件series
。
这会给我一个看起来像这样的列表:
/home/cas/plex-media/series/Scorpion/Season 4/Scorpion - S04E06 - Queen Scary.srt
/home/cas/plex-media/series/Scorpion/Season 4/Scorpion - S04E03 - Grow a Deer, A Female Deer.srt
/home/cas/plex-media/series/Devs/Season 1/Devs - S01E03 - Episode 3.srt
/home/cas/plex-media/series/Modern Family/Season 8/Modern Family - S08E21 - Alone Time.srt
这是一个简化版本。例如,可能有 5 或 300 个输出,其中可能有 8 或 50 倍 Scorpion。输出变化很大。
我试图找到一个命令(我可以在原始命令后面使用管道),这将给我结果:
Scorpion, Devs, Modern Family
并不是:
Scorpion, Scorpion, Scorpion, Scorpion, Devs, Devs, Modern Family, Modern Family, Modern Family,
Modern Family, Modern Family, Modern Family, etc..
你明白了。每场演出,一个输出。不是每个文件。
它可以在另一个布局中。这并不重要(尽管我更喜欢上面的布局)。
我一直在尝试使用 grep,但我就是做不到。所以我基本上是在问:你知道我怎样才能得到上面的输出吗?
谢谢。
假设系列标题和文件名其余部分之间的分隔符是一致的空格-连字符-空格,您可以使用 awk 执行以下操作:
该
!seen[$1]
构造对结果进行重复数据删除。最后一个paste
命令将输出从换行符分隔的列表转换为逗号分隔的列表。