Im Laufe der Zeit sammelt sich auf der Festplatte sicherlich der das ein oder andere Porno Musikvideo. Oft verbringt man dann, ähnlich wie bei Streaming Diensten wie Netflix oder Amazon Instant Video, mehr Zeit mit der Auswahl, als mit dem tatsächlichen Konsum.

Das muss nicht sein, denn zumindest für lokale Dateien leistet die bash und ffplay (aus ffmpeg) wirklich gute Dienste.

#!/bin/bash
ls | sort -R | tail -n 1 | xargs -I A ffplay "A"
Das ganze einfach als randvideo.sh abspeichern und per chmod 0755 randvideo.sh die passenden Rechte setzen, schon wählt ./randvideo.sh innerhalb dieses Ordners für euch das passende Unterhaltungsprogramm aus dem Datengrab.

Doch was macht dieser Befehl? Nun, er macht folgendes:

  1. Ausgabe der Dateien im aktuellen Ordner
  2. Sotieren der Dateien nach zufälliger Reihenfolge
  3. Erstes Ergebnis nehmen, den Rest verwerfen
  4. Programm mit zuvor gewähltem Ergebnis ausführen
Das Script wurde bewusst einfach gehalten und es wird kein Anspruch darauf erhoben, dass dieses in jeder Situation fehlerfrei arbeitet. Vielmehr soll es als Inspiration dienen ;)

Update #1

Der liebe Rasi hat mir eine alternative Implementierung per Mail vorgeschlagen, welche ich euch nicht vorenthalten möchte:

foo=(*); rand=$[ $RANDOM % ${#foo[@]} ]; ffplay "${foo[$rand]}"
Der Vorteil dieser Lösung ist, dass alles innerhalb der bash abläuft und auf die Pipes meiner Lösung verzichtet wird. Der Nachteil ist, dass es IMHO für Laien schwerer zu verstehen ist was passiert.

Der Ablauf ist beinahe gleich, der einzige Unterschied ist, dass ich bei meiner Lösung die Dateien zufällig sortiere, während die Lösung von Rasi einfach einen zufälligen Eintrag aus der Liste auswählt.