Используйте временный каталог, затем findвсе ваши файлы, перемешайте список со списком sortи переместите верхнюю 1000 списка во временный каталог. Удалите остальные, затем переместите файлы обратно из временного каталога.
$ mkdir ../tmp-dir
$ find . -type f | sort -R | head -1000 | xargs -I "I" mv I ../tmp-dir/
$ rm ./*
$ mv ../tmp-dir/* .
Если вы xargsжалуетесь на длину строки, используйте меньшее число с headи повторяйте команду по мере необходимости (т.е. измените -1000на -500и запустите ее дважды, или измените на -200и запустите ее 5 раз).
Он также не сможет обрабатывать имена файлов, которые содержат пробелы; а @ ответ RLD в шоу, вы можете использовать find«s -print0аргумент, -zаргументы sortи head, и -0с , xargsчтобы обеспечить надлежащую обработку имен файлов.
Наконец, если tmp-dirуже существует, вы должны заменить имя каталога, который не существует.