Ähm, vergessen wir nicht
sort --random-sort
shuf
ist der beste Weg.
sort -R
ist quälend langsam. Ich habe gerade versucht, eine 5-GB-Datei zu sortieren. Ich habe nach 2,5 Stunden aufgegeben. Dann shuf
in einer Minute sortiert.
Und Sie bekommen einen Perl-Einzeiler!
perl -MList::Util -e 'print List::Util::shuffle <>'
Es verwendet ein Modul, aber das Modul ist Teil der Perl-Code-Distribution. Wenn das nicht gut genug ist, können Sie erwägen, Ihr eigenes zu rollen.
Ich habe versucht, dies mit dem -i
zu verwenden Flag ("edit-in-place"), damit es die Datei bearbeitet. Die Dokumentation schlägt vor, dass es funktionieren sollte, aber es funktioniert nicht. Es zeigt immer noch die gemischte Datei auf stdout an, aber diesmal löscht es das Original. Ich schlage vor, Sie verwenden es nicht.
Betrachten Sie ein Shell-Skript:
#!/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
Ungetestet, aber funktioniert hoffentlich.