Bash: How to list n random number of files (not head or tail)
I have a large directory containing numerous files of similar kind. I have to send few random files for auditing. These files should not be from the top or bottom (eg. not in head
or tail
). This is sub process which I am struggling.
I want to get any number of files. It may be 10 or 2 or 3, but should not be in any order.
For example from this list of files:
10 1121231243 12 3124234ewdf 31243345 xaa 112 1121231243214 3 3124234ewdffd 3124334532 xab 1121 112123124321442334 3124 31243 3124334532324 xac 112123 1121ewszf 3124234 312433 file1
I would like to get a random subset like in this instance:
1121 112123124321442334 3124 1121ewszf
Solution 1:
Use random sort
(-R
or --random-sort
) and then head
or tail
:
ls | sort -R | head -10
Solution 2:
You can use sort -R
to sort the list randomly, and then use the $RANDOM
variable with head
to get a random number of results:
ls | sort -R | head -n $(( $RANDOM % 10 + 1 ))
You will get 10 results or less (never zero)