gpt4 book ai didi

linux - 通过 xargs 将空查找结果传递给 du 会导致意外行为

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:09:40 24 4
gpt4 key购买 nike

我想出了一个命令来查找文件并使用 find、xargs 和 du 打印它们的大小。当我搜索不存在的东西时遇到问题。使用 xargs 方法, du 在不存在某些内容时报告所有文件夹,但我希望它不会报告任何内容,因为应该找不到任何内容。当使用 -exec 方法时它工作正常,但根据我在更大的搜索中阅读和观察到的内容,它效率较低,因为它为找到的每个文件重复 du 命令,而不是对找到的文件组进行操作。请参阅其中提到的部分 -delete: http://content.hccfl.edu/pollock/unix/findcmd.htm

这是一个例子。首先,这是目录中的内容:

ls<br/>
bar_dir/ test1.foo test2.foo test3.foo

ls bar_dir<br/>
test1.bar test2.bar test3.bar

这是我希望找到结果的两个搜索:

find . -name '*.foo' -type f -print0 | xargs -0 du -h<br/>
4.0K ./test2.foo<br/>
4.0K ./test1.foo<br/>
4.0K ./test3.foo

find . -name '*.bar' -type f -print0 | xargs -0 du -h<br/>
4.0K ./bar_dir/test1.bar<br/>
4.0K ./bar_dir/test2.bar<br/>
4.0K ./bar_dir/test3.bar

这是一个我期望没有结果的搜索,但我得到了一个目录列表:

find . -name '*.qux' -type f -print0 | xargs -0 du -h<br/>
16K ./bar_dir<br/>
32K .

如果我只使用查找,它什么都不返回(如预期的那样)

find . -name '*.qux' -print0

如果我对 du 使用 -exec 方法,它也不会返回任何内容(如预期的那样)

find . -name '*.qux' -type f -exec du -h '{}' \;

那么当 find 没有找到任何东西时,xargs du 方法出了什么问题?感谢您的宝贵时间。

最佳答案

你看过 du --files0-from - 了吗?

来自 man du

   --files0-from=F
summarize disk usage of the NUL-terminated file names specified in file F; If F is - then read names from standard input

像这样尝试:

find . -name '*.qux' -type f -print0 | du -h --files0-from -

关于linux - 通过 xargs 将空查找结果传递给 du 会导致意外行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21338749/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com