首頁>Ubuntu>source

我有以下命令:

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,但我做不到.所以我基本上是在問:您有一个主意,我怎樣才能获得上面的輸出?

谢谢。

最新回復
  • 7月前
    1 #

    假設系列標题和檔案名其餘部分之間的分隔符是一致的空格-连字元-空格,您可以使用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

相似問題

  • package management:sudo apt-get更新錯誤,需要帮助
  • ubuntu20.04:如何进入文字應用設置?