多くのファイルタイプが含まれる大きなフォルダが1つあります(例:.txt
、.sh
)。約40Gbです。それを10Gbの4つの部分に分割したいと思います。どうすればこれを達成できますか?
binのパッキング問題 を解決しようとせずに、次のようなスクリプトを使用できます。
#!/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
単一の10GBファイルの場合、試すことができます
split -b 4000000000 filename