我有一个大小约为 2.5 TB 的目录。该目录下有3000多个子目录,没有任何文件。每个子目录的大小差异很大,有的小于 1 MB,有的超过 15 GB,但没有一个超过 20 GB。我想将这个主目录分成许多较小的目录,每个目录小于 20 GB。这个解决方案才不是需要中等最大存储,这意味着,它可以按字母顺序对所有文件进行排序,并添加目录,只要不超过 20 GB。
我已经尝试过答案这解决方案,虽然它对于包含文件的目录非常有效,但在存在子目录的情况下不起作用。
#!/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