J'ai la commande suivante:
find /home/cas/plex-media/series/ -type f -name '*.srt' | grep -v .en.srt
Qui va trouver tout .srt
fichiers, qui ne sont pas .en.srt
Dans le répertoire et les sous-répertoires de series
.
Cela me donnera une liste qui pourrait ressembler à ceci:
/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
Ceci est une version simplifiée. Il pourrait y avoir 5 ou 300 sorties, où il pourrait y avoir 8 ou 50 fois Scorpion par exemple. La sortie varie beaucoup.
J'essaie de trouver une commande (que je pouvais tuyer derrière la commande d'origine), cela me donnera le résultat:
Scorpion, Devs, Modern Family
Et pas:
Scorpion, Scorpion, Scorpion, Scorpion, Devs, Devs, Modern Family, Modern Family, Modern Family,
Modern Family, Modern Family, Modern Family, etc..
Vous avez eu l'idée. Pour chaque spectacle, une sortie. Pas pour chaque fichier.
Il peut être dans une autre mise en page. Peu importe que je préfère la mise en page ci-dessus).
J'ai essayé avec Grep mais je ne peux tout simplement pas le faire. Donc, je demande essentiellement: avez-vous une idée de la façon dont je pourrais obtenir la sortie ci-dessus?
Merci.
En supposant que le délimiteur entre le titre de la série et le reste du nom de fichier est un espace-espacement cohérent, vous pouvez faire quelque chose comme ça avec AWK:
find . -type f -name '*.srt' ! -name '*.en.srt' -printf '%f\0' |
awk -v RS='\0' -F ' - ' '!seen[$1]++{print $1}' | paste -sd,
Le !seen[$1]
CONSTRUCTION DELUBLE DUPLIDE LES RÉSULTATS. La commande finale paste
active la sortie d'une liste délimitée à une liste délimitée par des virgules.