Utilice un directorio temporal, luego findtodos sus archivos, aleatorice la lista con sorty mueva los 1000 primeros de la lista al directorio temporal. Elimine el resto, luego mueva los archivos del directorio temporal.
$ mkdir ../tmp-dir
$ find . -type f | sort -R | head -1000 | xargs -I "I" mv I ../tmp-dir/
$ rm ./*
$ mv ../tmp-dir/* .
Si xargsse queja de longitud de la línea, utilizar un número más pequeño con heady repetir el comando, según sea necesario (es decir, cambio -1000a -500y ejecutarlo dos veces, o el cambio a -200y ejecutarlo 5 veces).
Tampoco podrá manejar nombres de archivos que incluyan espacios; Como muestra la respuesta de @ rld , puede usar findel -print0argumento de, los -zargumentos de sorty head, y -0con xargspara garantizar el manejo adecuado del nombre de archivo.
Finalmente, si tmp-dirya existe, debe sustituir un nombre de directorio que no existe.