У меня есть пара сотен файлов в одной папке, и я хотел бы произвольно переместить их в несколько разных папок с помощью скрипта bash - однако я бы хотел заполнить каждую из этих папок назначения только дозаданная емкость.
Я думаю, что правильный подход к этому - назначить два массива, один из которых содержит все папки назначения, а другой - все файлы.Затем я могу произвольно взять файл из filesarr
и поместить его в папку назначения.У меня вопрос, как я могу ограничить количество файлов, помещаемых в каждую папку назначения ?Скажем, я ищу десять файлов в папке назначения - как я могу переместить первые десять файлов из filesarr
в первую папку в foldersarr
, а затем переместить следующие десять во вторую папку в foldersarr
, пока всефайлы были перемещены?Я знаю, что мне, вероятно, следует использовать здесь счетчик, но моя текущая попытка (ниже) не сработает.
filesarr=(/Path/to/files/*) # this is the array of files to shuffle
foldersarr=(/Path/to/destination/folders/) # array of folders to move into
foldercount=0 # set it to 0
for afolder in "${foldersarr[@]}"; do
if [[ "$foldercount" -gt 10 ]]; then
echo "$foldercount files in folder, exiting and moving to next folder"
exit 1
else
for afile in "${filesarr[@]}"; do # do loop length(array) times; once for each file
length=${#filesarr[@]}
randomi=$(( $RANDOM % $length )) # select a random index
filename=${filesarr[$randomi]}
mv ${filename} ${foldersarr[@]}
echo "moving '$filename'"
foldercount=$((foldercount+1))
unset -v "filesarr[$randomi]" # unset after moved
array=("${filesarr[@]}") # remove NULL elements introduced by unset; copy array
done
fi
done
Моя текущая структура каталогов состоит из всех файлов в «удерживающем» каталоге и всехцелевые папки, куда я хотел бы переместить их в отдельную папку.
rootfolder
│
├── holding
│ ├── dywd.pdf
│ ├── ... (approx. 200 files)
│ └── kjfwekfjnwe.pdf
│
└── destinations
├── folder01
├── ...
└── folder10
Я бы хотел закончить с этим:
rootfolder
│
├── holding
│
└── destinations
├── folder01
│ ├── lwkejdwe.pdf
│ ├── ...
│ └── (ten files in this folder)
├── ...
│
└── folderXX
├── qwuoe.pdf
├── ...
└── (ten files in this folder)