さまざまなサイズの150万のファイル(メールファイル)を含むフォルダがあります。たとえば、ディレクトリを作成してa
フォルダが指定されたサイズに達するまで、一部のファイル(すべて数値タイムスタンプで始まる)をフォルダに移動したいとします。どうすればいいですか?mv
a
a
プロシージャやループを避けることは利点(例えば1行)ですが、機能するすべてをお勧めしますfor
!while
ベストアンサー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"