Bash - One-liner για να επιλέξεις τυχαία βίντεο από φάκελο

Ένας σύντομος οδηγός για το πώς να διαλέξεις 5 βίντεο από έναν φάκελο και να τα παίξεις στο VLC.

Η εντολή:

find "/path/to/your/videos" -maxdepth 1 -type f \( -iname \*.mp4 -o -iname \*.mkv -o -iname \*.gif \) | shuf -n5 | sed -e 's/^/"/g' -e 's/$/"/g' | tr '\n' ' ' | xargs vlc

Να το σπάσουμε σε βήματα:

  1. Κάνεις find στον φάκελο που θες βάζοντας το full path (χωρίς / στο τέλος)
  2. του λες -maxdepth 1 για να δει μόνο σε αυτόν τον φάκελο (μάλλον δεν χρειάζεται γιατί παρακάτω ψάχνεις μόνο για αρχεία, αλλά το έβαλα για καλό και για κακό)
  3. -type f για να ψάξεις μόνο αρχεία (όχι φακέλους)
  4. ( -iname *.mp4 -o -iname *.mkv -o -iname *.gif ) για να ψάξεις αρχεία που έχουν κατάληξη mp4 ή mkv ή gif κτλ. Προσαρμώζεις ανάλογα με τις απαιτήσεις σου
  5. κάνεις pipe σε | shuf -n5 για να σου διαλέξει 5 βίντεο από όλη την λίστα
  6. κάνεις | sed -e ‘s/^/"/g’ -e ‘s/$/"/g’ για να σου βάλεις double quotes στην αρχή και στο τέλος του κάθε αρχείου (χρειάζεται γιατί αν έχει κενά (whitespace) το παίρνει σαν καινούρια γραμμή)
  7. tr ‘\n’ ’ ’ ← αυτό αντικαθιστά όλες τις νέες γραμμές (newline \n) με κενό γιατί το vlc θέλει πολλά βίντεο με την μορφή vlc “file1.p4” “file2.mp4” “file3.mp4” κτλ
  8. Τέλος | xargs vlc για να περάσει όλο το προηγούμενο output των εντολών ως παράμετρο για το vlc
8 «Μου αρέσει»