Linux 列出总大小约为某个值的最新文件

Linux 列出总大小约为某个值的最新文件,linux,Linux,我想将一个目录中最新的文件复制到另一个目录,这样我想复制的文件的总大小应该是10gb 我知道我可以列出最近10个文件,大小如下: find . -maxdepth 1 -type f -size +100M -print0 | xargs -0 ls -Shal | head 但是,有没有办法找到总大小约为10gb的最新文件 谢谢是的,这是可能的find有一个printf操作,允许您只输出感兴趣的信息。在您的情况下,这将是一个时间戳(例如上次修改时间)、文件大小和文件名。然后,您可以根据时间戳

我想将一个目录中最新的文件复制到另一个目录,这样我想复制的文件的总大小应该是10gb

我知道我可以列出最近10个文件,大小如下:

find . -maxdepth 1 -type f -size +100M -print0 | xargs -0 ls -Shal | head
但是,有没有办法找到总大小约为10gb的最新文件


谢谢

是的,这是可能的
find
有一个
printf
操作,允许您只输出感兴趣的信息。在您的情况下,这将是一个时间戳(例如上次修改时间)、文件大小和文件名。然后,您可以根据时间戳对输出进行排序,并使用
awk
对文件大小求和,并将文件名输出到某个限制:

find "$some_directory" -printf "%T@ %s %p\n" | sort -nr \
    | awk '{ a = a + $2; if (a > 10000) { print a; exit; }; print $3; }'

根据您的需要调整限制,如果您对结果不感兴趣,请删除
打印
。如果要包含使总和超过限制的文件,请将
print a
替换为
print$3

,但我的问题是要找到最近文件的最大数量,这样当我们将其大小相加时,它小于10gb。它不是特定于文件的,假设目录中有1000个文件。最后10个文件的总容量为11gb,最后9个文件的总容量为9.8gb。我想要最后一个9文件。唯一的nit应该是
“$some_directory”
,以防用户盲目尝试,例如
我的文档
(或其他类似的废话…)@DavidC.Rankin您当然是对的,但我只将其用作元变量。也许我应该说
$foo
。引用的是“nit”(我指的是小土豆和任何人都应该抓住的东西,如果他们有问题的话),但是作为一名好老师,你总是想展示正确的用法,以避免可能的分词。就个人而言,我喜欢
“$some_directory”
“$path”
很好,
“$foo”
会丢失路径内涵。@DavidC.Rankin Done。