【问题标题】:get filenames with paths that match a basename pattern获取路径与基本名称模式匹配的文件名
【发布时间】:2021-01-27 19:13:11
【问题描述】:

我有一个文件名列表,它们的路径如下

/some/path/or/another/RCrandomname.TRI
/another/path/NCrandomname2.TRI
/one/more/path/RCrandomname3.PCD

我只想选择基本名称以 RC 开头并具有扩展名 TRI 的文件名(及其路径) 所以在上面的例子中我只想得到

/some/path/or/another/RCrandomname.TRI

如果我只有基本名称,我就可以做到

ls | grep "^RC.*\.TRI$" > filenames

但是这里我有所有的路径。 我有使用ls的要求

【问题讨论】:

  • find . -type f -name 'RC*.TRI' > filenames?
  • @WiktorStribiżew 我需要使用ls
  • 那就试试ls | grep -E '^(.*/)?RC[^/]*\.TRI$' > filenames
  • grep 不会删除任何东西,它只会匹配或不匹配。

标签: grep ls


【解决方案1】:

不要解析ls的输出,它在很多方面都容易出错。

您可以通过shopt globstar 使用通配符:

shopt -s globstar
ls -1 **/RC*.TRI > filenames

globstar,启用后,通配代码会特别对待**——它会递归匹配所有目录(以及其中的文件,如果合适)。

【讨论】:

    猜你喜欢
    • 2018-05-15
    • 2010-11-05
    • 2021-09-28
    • 1970-01-01
    • 1970-01-01
    • 2019-05-07
    • 2011-04-13
    • 2010-10-05
    • 2019-10-16
    相关资源
    最近更新 更多