特定のサイズ制限に達するまでフォルダにファイルを追加する方法は?

特定のサイズ制限に達するまでフォルダにファイルを追加する方法は?

さまざまなサイズの150万のファイル(メールファイル)を含むフォルダがあります。たとえば、ディレクトリを作成してaフォルダが指定されたサイズに達するまで、一部のファイル(すべて数値タイムスタンプで始まる)をフォルダに移動したいとします。どうすればいいですか?mvaa

プロシージャやループを避けることは利点(例えば1行)ですが、機能するすべてをお勧めしますforwhile

ベストアンサー1

max_k=1000
sum=0
target_dir_path="/target/dir"
find . -mindepth 1 -maxdepth 1 -type f -printf '%k %p\0' |
   while IFS= read -r -d $'\0' line; do
       size="${line%% *}"
       path="${line#* }"
       sum=$((sum+size))
       if [ "$sum" -le "$max_k" ]; then
           printf "%s\0" "$path"
       else
           break
       fi
    done | xargs -0 echo mv -t "target_dir_path"

おすすめ記事