@Printip

Как выбрать случайные файлы из папки?

Есть папка и в ней миллион файлов. Нужно выбрать случайные из папки 100 тысяч файлов и скопировать их в другую папку.
Подскажите пожалуйста как это можно организовать в терминале?
  • Вопрос задан
  • 1273 просмотра
Решения вопроса 1
castomi
@castomi
Серверный администратор - tickets.settin.ru
Вот так
#!/bin/bash
if ! [ $3 ];then
	precent=6
else
	precent=$3
fi
ls $1 > ls.log
while read line
do
	[ $[ $RANDOM % $precent ] == 0 ] && cp -R $1/$line $2
done < ls.log

Сохраняешь этот скрипт к примеру сюда /usr/local/bin , к примеру под именем cprandom
далее делаешь его испольняемым.
chmod +x /usr/local/bin/cprandom
далее работаешь
cprandom $1 $2 $3
где
$1 - это адрес папки с твоими файлами
$2 - адрес папки куда копировать рандомные
$3 - указать колличество цифр начиная с 0 которые участвуют в рандоме, то есть указывая 1 там всегда будет 0 и все файлы скопируются, 2 - 50 на 50, 3 , треть ну и т.п. По умолчанию стоит 6

То есть к примеру
cprandom /home/vity /tmp 20

Приятного использования))
Писал на коленке, даже не запускал ни разу, но вроде без ошибок. Если что пиши)
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
dio4
@dio4
team leader, devops engineer, master of sports
А можно написать скрипт на bash, тем более, что раздел вопроса
"BASH LINUX TERMINAL" :)
Используя генератор случайных чисел в bash. К примеру, shuf -i 100000-999999 -n 100000
это сгенерирует 100000 сл. чисел в диапазоне от 100000 до 999999, которые можно использовать для выбора случайным образом требуемых вам файлов в цикле.
Ответ написан
Adamos
@Adamos
ls | shuf | tail | mv
Что-то в этом роде. Ключи сами по man-ам собирайте.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы