Доброго времени суток! Нижайше прошу помощи гуру! Есть уже готовый код, который делает ls в папке, и копирует случайные файлы из этого списка в другую папку, но у меня возникли следующие вопросы: 1) Можно ли сохранить результаты запроса ls не в файл, а в переменную, и выбирать случайное значение оттуда? 2) Можно ли заставить скрипт после выполнения копирования каждого файла, проверять размер каталога, и остановиться по достижению заданного размера? Скажем мне нужно чтобы скрипт накопировал в каталог музыки, в случайном порядке, но чтобы папка не была больше 700 МБ(CD диск). Привожу код
#!/bin/bash
#Music_folder
mf=/mnt/h500gb/download/Music
echo "Определена папка источник это $mf"
ls $mf > ~/music.txt
fl=~/music.txt
dest=/mnt/h500gb/download/to_cd
echo "Определена папка назначения это $dest"
if [ -d $dest/ ]
then
echo "Папка $dest существует продолжаем"
else
echo "Папка $dest не существует, создаю"
mkdir -pv $dest
fi
# target_size
ts=702000
echo "Размер-цель $ts"
count=$(cat $fl | wc -l)
echo "Количество песен в источнике $count"
weight=$(du --total $dest)
echo "Вес источника $weight"
while [ "weight" != "$ts" ]
do
du --total $dest
mp3=$(shuf -i 1-$count -n 1)
echo "Номер для копирования $mp3"
nomp3=$(head -n $mp3 $fl | tail -n 1)
echo "Кандидат на копирование $nomp3"
if [ -f "$dest/$nomp3" ]
then
echo "$dest/$nomp3 уже существует, следующий!"
continue
else
echo "В папке назначения такого нет! Так и запишем!"
rsync -avhu --progress --partial "$mf/$nomp3" "$dest/$nomp3"
continue
echo "$dest/$nomp3 скопирован! Дальше!"
fi
echo "Вес в пределах нормы"
continue
done