Ваша функция чанка может быть реализована в bash следующим образом.
chunk(){
size=$1
n=$2
firstline=$((n*size))
i=0
while [ $i -lt $firstline ]
do
read -r junk || return
i=$((i+1))
done
i=0
while [ $i -lt $size ]
do
read -r str || return
printf "%s\n" "$str"
i=$((i+1))
done
}
Обратите внимание, что результаты могут быть неожиданными, если файлы добавляются между вызовами для find
. Итак, вы можете захотеть реализовать API save_chunks
/get_chunk
вместо запрошенного или сделать что-то вроде:
catn(){
i=0
while [ $i -lt $1 ] && read -r s
do printf "%s\n" "$s";i=$((i+1))
done
}
find -f . |
(catn 10; # shows first chunk of size 10
catn 10; # second chunk of size 10
catn 10; # last of size < n
catn 10) # does nothing
Это также должно быть быстрее.