我有以下命令:
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, Devs, Modern Family而不是:
Scorpion, Scorpion, Scorpion, Scorpion, Devs, Devs, Modern Family, Modern Family, Modern Family,
Modern Family, Modern Family, Modern Family, etc.. 你明白了吧。每次演出都有一个输出。不是每个文件都有。
它可以在另一个布局中。这并不重要(尽管我更喜欢上面的布局)。
我一直在尝试grep,但我做不到。所以我基本上是在问:你知道我怎么能得到上面的输出吗?
谢谢。
发布于 2020-12-23 15:38:31
假设系列标题与文件名的其余部分之间的分隔符是一致的空格-连字符空间,您可以使用awk执行这样的操作:
find . -type f -name '*.srt' ! -name '*.en.srt' -printf '%f\0' |
awk -v RS='\0' -F ' - ' '!seen[$1]++{print $1}' | paste -sd,!seen[$1]构造不重复结果。最后的paste命令将输出从换行符分隔的列表转换为逗号分隔的列表。
https://askubuntu.com/questions/1302367
复制相似问题