ディレクトリのすべてのファイルを各グループ サイズが 1 GB のグループに分割する Bash スクリプトに問題があります。
次のようなスクリプトがあります。
#!/bin/bash
path=$1
unset i
echo $path start
fpath=`pwd`"/files"
find "$path" -type f>files
max=`wc -l $fpath | awk '{printf $1}'`
while read file; do
files[i]=$file
size[i]=$(du -s $file | awk '{printf $1}')
((i++))
echo -ne $i/$max'\r'
done < `pwd`"/files"
echo -ne '\n'
echo 'sizes and filenames done'
unset weight index groupid
for item in ${!files[*]}; do
weight=$((weight+${size[$item]}))
group[index]=${files[$item]}
((index++))
if [ $weight -gt "$((2**30))" ]; then
((groupid++))
for filename in "${group[@]}"
do
echo $filename
done >euenv.part"$groupid"
unset group index weight
fi
done
((groupid++))
for filename in "${group[@]}"
do
echo $filename
done >euenv.part"$groupid"
echo 'done'
動作しますが、非常に遅いです。誰でも私を助けて、それをより速くする方法を教えてもらえますか? ありがとう