【问题标题】:statistical find -exec统计查找-exec
【发布时间】:2011-02-16 00:57:39
【问题描述】:

我想对 find 找到的文件的一定百分比运行命令。我将在这里使用 puts 而不是真正的代码。

find . -type f -exec ruby -e "puts '{}' if (rand > 0.2)" \;

我有很多文件。有没有办法在不调用 rand 甚至不使用 Ruby 的情况下做到这一点?

我考虑过在文件大小上使用 mod X,因为文件或多或少是随机长度,但我无法找到一种方法来告诉 find 在表达式中使用它。 p>

【问题讨论】:

    标签: find exec


    【解决方案1】:

    这会打印 50% 的文件:

       find . -exec bash -c "echo -n \$RANDOM | tail -c 1 | grep -q [0-4]" \; -print
    

    要执行某些操作,这应该可以:

       find . -exec bash -c "echo -n \$RANDOM | tail -c 1 | grep -q [0-4]" \; -exec my_command \;
    

    【讨论】:

      【解决方案2】:

      我想我找到了更好的方法:

      find . -type f | ruby -n -e 'puts $_.chop if (rand > 0.5)' 
      

      如果您有 很多 个文件,为每个文件执行一个 bash shell 会消耗资源。上面的行启动了一个长时间运行的 ruby​​ 进程,它只处理来自 find 的输入。它要快得多。

      【讨论】:

        猜你喜欢
        • 2011-08-02
        • 1970-01-01
        • 2011-02-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-04-05
        • 2011-08-14
        • 1970-01-01
        相关资源
        最近更新 更多