Disk-Usage

如何找到第一個 X gb 數據?

  • January 30, 2019

我一直在嘗試通過將文件夾移動到另一個來釋放驅動器上的一些空間的方法。我有一個文件夾,裡面裝滿了我可以移動的東西,不需要全部,以騰出一些空間。

在 Windows 中,我只需選擇一堆文件夾,獲取屬性,它會告訴我它佔用了多少空間,我會選擇或多或少然後移動它們。我無法從 bash 終端執行此操作,而且我不知道該怎麼做。Google搜尋一直在引導我將所有文件移動到一定大小,這不是我想要做的。

在 GNU 系統上,您可以將其編寫為:

#! /bin/bash -
usage() {
 printf >&2 '%s\n' "Usage: $0 <destination> <size> [<file1> [<file2>...]]"
 exit 1
}
(($# >= 2)) || usage
dest=$1
size=$(numfmt --from=iec <<< "$2") || usage
shift 2
(($# == 0)) && exit
selected=()
sum=0

shopt -s lastpipe
LC_ALL=C du -s --null --block-size=1 -- "$@" |
 while
   ((sum < size)) &&
     IFS= read -rd '' rec &&
     s=${rec%%$'\t'*} &&
     file=${rec#*$'\t'}
 do
     selected+=("$file")
     ((sum += s))
 done

((${#selected[@]} == 0)) ||
 exec mv -t "$dest" -- "${selected[@]}"

例如用作:

that-script /dest/folder 1G *

從該 glob 的擴展中移動盡可能多的文件*以構成至少 1GiB。

引用自:https://unix.stackexchange.com/questions/497391