【问题标题】:List too long for `ls` command, CSH`ls` 命令的列表太长,CSH
【发布时间】:2011-09-18 01:26:37
【问题描述】:

我想在几个目录中获取我所有ofl 类型的文件的列表。我使用了休闲命令:

ls RESULTS/*/quakesim/iecrud/quake/fgb/stflt/*.ofl

但我收到一条消息:/bin/ls: Argument list too long. 有超过 1600 个这样的文件。有没有办法仍然获取文件列表?

编辑:

我需要文件的路径,而不仅仅是有多少 wc 是为了尝试查看我有多少文件而不用 1600 多个路径“污染”我的屏幕。

【问题讨论】:

  • 请不要写答案或 cmets 说我不应该使用csh
  • 这个实例其实不是csh的错。
  • unix.stackexchange.com 可能是个更好的提问地点

标签: csh ls


【解决方案1】:

使用find 而不是ls

示例:(假设您当前的工作目录是 RESULTS 的父级)

find . -name "RESULTS/*/quakesim/iecrud/quake/fgb/stflt/*.ofl" -print

第二个选项:

find . -print | egrep '.ofl$'

【讨论】:

    【解决方案2】:

    您可以制作一个快速 bash 脚本,为您的两颗星中的一颗迭代从 a 到 z 的不同字母,然后,对于每个结果,您将 wc 的结果添加到每次迭代的当前总数中,然后返回结果.

    你也可以看看它是否可以使用:

    [a-m]*
    [o-z]*
    

    只有两个不同的命令。可能更简单,虽然我不知道参数数量的限制。

    【讨论】:

      【解决方案3】:

      这可能很脏,但它可以满足我的需求并在我的能力范围内。我不认为它执行得很快,但它让我可以继续我的一天。

      ls | grep jpg | <something>
      

      我得到了一个 90,000 长的 jpg 列表并将它们传送到 avconv 以生成延时摄影。

      我之前使用的是 ls *.jpg| avconv 在我遇到这个问题之前。

      【讨论】:

        猜你喜欢
        • 2020-05-26
        • 1970-01-01
        • 2020-11-21
        • 1970-01-01
        • 2014-12-03
        • 2012-07-02
        • 2018-11-25
        • 1970-01-01
        • 2013-05-30
        相关资源
        最近更新 更多