【问题标题】:Select range of file unix选择文件 unix 的范围
【发布时间】:2014-04-18 13:55:07
【问题描述】:

我有一个脚本可以分析一组具有相同前缀和不同索引的文件:prefix0、prefix1、...prefix100000。我通常将这个脚本运行为:

./script prefix*

以这种方式,我使用了所有 100000 个文件。我怎样才能只使用前 1000 或 2000 个文件作为脚本参数?有没有正则表达式可以做到这一点?无论我要使用的文件的索引是什么(即从文件前缀0到前缀1000或从前缀50到前缀500),是否有通用方法?

【问题讨论】:

  • ./script的代码在哪里?
  • glob 不是正则表达式。对于您给出的示例,您可以使用./script prefix[12]???,但这也将匹配文件名prefix1aaa

标签: regex file unix filter


【解决方案1】:

您不能在 glob 中使用正则表达式,但可以这样做:

  ./script $( seq 5 50 | sed 's/^/prefix/' )

编辑文件前缀5到前缀50(如果你有seq;如果没有,使用jot

但是,如果您要这样做,您可能应该考虑在循环中调用脚本,而不是尝试一次传递所有参数。

【讨论】:

    【解决方案2】:

    您可以使用 [] 的 shell 构造。

    按照您的范围示例:

    ./script prefix[50-500] ./script prefix[0-1000]

    它将执行范围内命名的所有脚本。

    玩得开心!

    http://mylinuxbook.com/8-examples-of-wildcards-in-bash/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-08
      • 1970-01-01
      • 2018-01-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多