统计查找-exec

时间:2011-02-16 00:57:39

标签: find exec

我想在查找找到的文件的某些百分比上运行命令。我会在这里使用 puts 而不是真正的代码。

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

我有很多文件。有没有办法在不调用rand甚至使用Ruby的情况下执行此操作?

我考虑过在文件大小上使用 mod X ,因为文件或多或少是随机长度的,但是我无法想办法告诉find在表达式中使用它。

2 个答案:

答案 0 :(得分:3)

这会打印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 \;

答案 1 :(得分:0)

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

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

如果你有一个 lot 的文件,那么为每个文件执行一个bash shell可能会占用资源。上面的行开始一个长时间运行的ruby进程,它只是处理来自find的输入。它快得多。