我有一个大文件夹,里面有很多文件类型(例如.txt
,.sh
)。大约是40Gb。我想将其分成四个部分,每个部分 10Gb。我怎样才能实现这个目标?
答案1
无需尝试解决问题装箱问题,你可以使用这样的脚本:
#!/bin/bash
directory=${1:-testdir}
sizelimit=${2:-1000} # in MB
sizesofar=0
dircount=1
du -s --block-size=1M "$directory"/* | while read -r size file
do
if ((sizesofar + size > sizelimit))
then
(( dircount++ ))
sizesofar=0
fi
(( sizesofar += size ))
mkdir -p -- "$directory/sub_$dircount"
mv -- "$file" "$directory/sub_$dircount"
done
答案2
如果是单个10GB文件,可以尝试
split -b 4000000000 filename