Use um diretório temporário, depois findtodos os seus arquivos, escolha a lista aleatoriamente sorte mova os 1000 principais da lista para o diretório temporário. Exclua o restante e mova os arquivos de volta do diretório temporário.
$ mkdir ../tmp-dir
$ find . -type f | sort -R | head -1000 | xargs -I "I" mv I ../tmp-dir/
$ rm ./*
$ mv ../tmp-dir/* .
Se xargsqueixa-se o comprimento da linha, usar um número menor com heade repetir o comando conforme necessário (isto é, a mudança -1000para -500e executá-lo duas vezes, ou alteração para -200e executá-lo 5 vezes).
Ele também falhará ao manipular nomes de arquivos que incluem espaços; como a resposta do @ rld mostra, você pode usar findo -print0argumento de, os -zargumentos para sorte heade -0com xargspara garantir o manuseio adequado do nome do arquivo.
Finalmente, se o tmp-dirjá existir, você deve substituir um nome de diretório que não existe.