Atualização: Ah, os primeiros 300GB, bem então ... isso provavelmente lento, dependendo do tamanho do arquivo, mas eu gosto do exercício: -)
filesize=0
for i in *; do
filesize=$(stat -c "%s" "$i");
(( totalsize += filesize ));
if [[ $totalsize < 322122547200 ]]; then
mv "$i" first_300/
else
mv "$i" the_rest/
fi
done
Espero que não haja problemas com o tamanho do int.
Se você quer dividi-las em pastas, cada uma com 300 arquivos, talvez você queira algo como o seguinte:
folder=0
counter=0
for i in *; do
mv $i foo_$folder/
if [[ $(( counter % 10 )) -eq 0 ]]; then
(( folder++ ));
fi
(( counter++ ))
done
Embora isso possa não ser tão rápido quanto alguns dos comandos find. Se você quer apenas fazer o primeiro comando de 300, você pode usar a mesma estratégia de contador, mas usar um tempo de $ 300.