2011-02-16 59 views
1

我想運行一個命令查找找到的文件的一些百分比。我將在這裏使用puts而不是真實的代碼。統計發現-exec

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

我有很多文件。有沒有辦法做到這一點,而無需調用rand或甚至使用Ruby?

我考慮過在文件大小上使用mod x,因爲這些文件或多或少是隨機的長度,但我無法弄清楚如何在表達式中使用它。

回答

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 \; 
0

我想我找到了一個更好的辦法:

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

如果你有一個很多的文件,每個人都可以嚼碎一個bash shell資源。上面的代碼啓動一個長時間運行的ruby進程,它只處理來自find的輸入。它快得多。