Случайно выберите долю файлов из данного каталога

В данной директории имеется около 10000 файлов. Есть ли какая-нибудь команда, которая может помочь мне случайным образом выбрать из него 1000 файлов и поместить их в другой каталог. Выбранные файлы должны быть удалены из исходного каталога.

  • Переместить только при проверке?
  • Попытался переместить файл с помощью команды mv и теперь он потерян?
  • Переименовать часть нескольких файлов
  • Перемещение файла внутри той же файловой системы
  • Создать имя каталога на основе других других каталогов
  • Переименовать каталог и заменить только обновленные файлы Командная строка Unix / Linux
  • В RHEL / CentOS 7, действительно ли mv делает cp & rm в одной и той же файловой системе?
  • mv: Нет такой ошибки в файле или каталоге, хотя каталог, безусловно, существует
  • One Solution collect form web for “Случайно выберите долю файлов из данного каталога”

    Если у вас есть shuf , он легко позволит вам делать то, что вы хотите, при условии, что в нем нет символа новой строки, и нет подкаталогов:

     mapfile -t sample < <(shuf -n 1000 -e given_directory/*) mv "${sample[@]}" other_directory 

    Если есть подкаталоги, вы можете получить список файлов, используя find вместо glob. Или вы можете перепрофилировать и фильтровать. find также поможет вам разобраться с файлами, которые могут иметь новые строки в своих именах (это действительно плохая идея, но это не обязательно означает, что вы можете игнорировать эту возможность), так как вы можете использовать действие -print0 сочетании с -z flag to shuf . Например,

     find given_directory -type f -print0 | shuf -z -n 1000 | xargs -0 mv -t other_directory 

    mv -t – это (очень полезное) расширение Gnu, которое позволяет вам xargs целевой каталог в начале командной строки, который хорошо работает с xargs / find -exec для ввода нескольких аргументов в конце командной строки.

    Interesting Posts

    Есть ли доступ к файлу Linux, который позволяет приложению читать файл, но не пользователь?

    Есть ли команда, запрещающая IP-адрес

    FreeBSD csh, TAB, чтобы показать доступные варианты?

    Невозможно редактировать или удалять только файлы (ы) для чтения во встроенном Linux

    FAT32 – Нераспределенное пространство внутри раздела

    Почему этот процесс не закончится после SIGTERM

    Экран GNU: как использовать: aclumask для установки разрешений для неизвестных пользователей?

    Перенаправить перенаправляющий трафик на локальный сервер

    Следует ли отключать tmpfs при завершении работы системы?

    Как отлаживать то, что останавливает пинг для ответа на нашем сервере?

    Любой способ кодирования url в команде curl?

    Как перемещать (изображение) файлы в другие каталоги на основе дат файлов

    Ввод трубы в нано

    Как заменить «базовую системную оболочку» на IPython?

    Альтернатива «голова», которая не выходит?

    Linux и Unix - лучшая ОС в мире.