ええと、忘れないでください
sort --random-sort
shuf
sort -R
痛いほど遅いです。 5GBのファイルをソートしようとしました。 2.5時間であきらめました。次に shuf
すぐにソートしました。
そして、Perl のワンライナーを手に入れましょう!
perl -MList::Util -e 'print List::Util::shuffle <>'
モジュールを使用しますが、モジュールは Perl コード配布の一部です。それが十分でない場合は、自分で作成することを検討してください。
-i
でこれを使ってみました ファイルを編集するためのフラグ (「その場で編集」)。ドキュメントはそれが機能するはずだと示唆していますが、そうではありません。シャッフルされたファイルは引き続き標準出力に表示されますが、今回は元のファイルが削除されます。使用しないことをお勧めします。
シェル スクリプトを考えてみましょう:
#!/bin/sh
if [[ $# -eq 0 ]]
then
echo "Usage: $0 [file ...]"
exit 1
fi
for i in "[email protected]"
do
perl -MList::Util -e 'print List::Util::shuffle <>' $i > $i.new
if [[ `wc -c $i` -eq `wc -c $i.new` ]]
then
mv $i.new $i
else
echo "Error for file $i!"
fi
done
テストされていませんが、機能することを願っています。