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 
3

2 Answers

Use random sort (-R or --random-sort) and then head or tail:

ls | sort -R | head -10

1

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)

Your Answer

Sign up or log in

Sign up using Google Sign up using Facebook Sign up using Email and Password

Post as a guest

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

You Might Also Like