我想運行一個命令查找找到的文件的一些百分比。我將在這裏使用puts而不是真實的代碼。統計發現-exec
find . -type f -exec ruby -e "puts '{}' if (rand > 0.2)" \;
我有很多文件。有沒有辦法做到這一點,而無需調用rand或甚至使用Ruby?
我考慮過在文件大小上使用mod x,因爲這些文件或多或少是隨機的長度,但我無法弄清楚如何在表達式中使用它。
我想運行一個命令查找找到的文件的一些百分比。我將在這裏使用puts而不是真實的代碼。統計發現-exec
find . -type f -exec ruby -e "puts '{}' if (rand > 0.2)" \;
我有很多文件。有沒有辦法做到這一點,而無需調用rand或甚至使用Ruby?
我考慮過在文件大小上使用mod x,因爲這些文件或多或少是隨機的長度,但我無法弄清楚如何在表達式中使用它。
這將打印文件的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 \;
我想我找到了一個更好的辦法:
find . -type f | ruby -n -e 'puts $_.chop if (rand > 0.5)'
如果你有一個很多的文件,每個人都可以嚼碎一個bash shell資源。上面的代碼啓動一個長時間運行的ruby進程,它只處理來自find的輸入。它快得多。