web-dev-qa-db-ja.com

大きなフォルダーを同じサイズの小さなフォルダーに分割する方法

多くのファイルタイプが含まれる大きなフォルダが1つあります(例:.txt.sh)。約40Gbです。それを10Gbの4つの部分に分割したいと思います。どうすればこれを達成できますか?

3
user2689877

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 
4
user000001

単一の10GBファイルの場合、試すことができます

split -b 4000000000 filename
0
Vineeth Thomas