【问题标题】:cat files with at least 2 specified components in file namecat 文件名中至少包含 2 个指定组件
【发布时间】:2014-03-19 13:20:29
【问题描述】:

我的文件名如下所示:

act-art-atr-phm-pro-psy
act-art-atr-phm-pro-sta
act-art-atr-pro-psy-rel-sta
act-art-atr-pro-tme
act-art-atr-psy
act-art-atr-psy-qud-sta
act-art-atr-psy-sta
act-art-atr-rel
act-art-atr-sta
act-art-com

我想cat 包含至少两个我手动指示的特定单词(用“-”分隔)的文件。

例如:我想cat所有至少包含“act”和“psy”的文件,因此生成的文件将包含文件中的所有内容

act-art-atr-phm-pro-psy
act-art-atr-pro-psy-rel-sta
act-art-atr-psy
act-art-atr-psy-qud-sta
act-art-atr-psy-sta

我不确定是否有一个简单的正则表达式能够做到这一点,因为每个文件的文件名顺序都是唯一的。

是否有特定的regex 可以搜索包含至少两个由“-”分隔的三字母名称的文件,我可以使用它来cat 所有相应的文件?

如果我提出的regex +cat 策略不是最好的,甚至是更有效的方法来处理此任务。

【问题讨论】:

    标签: regex file cat


    【解决方案1】:

    文件名似乎包含按字母顺序排列的术语。所以你可以说

    cat `ls -1 | grep 'act.*psy'`
    

    cat $(ls -1 | grep 'act.*psy')
    

    【讨论】:

    • 感谢您的洞察!我没有想到,但它会真正解决问题,它们是按字母顺序排列的!
    【解决方案2】:

    如果你想用你的话得到-分隔的文件名:

    ls -1 | grep 'word1-word2'
    

    如果你想打印这些文件的所有内容:

    cat $(ls -1 | grep 'word1-word2' )
    

    【讨论】:

      猜你喜欢
      • 2020-12-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-06-22
      • 2017-04-13
      • 1970-01-01
      相关资源
      最近更新 更多