phi*_*raj 6 pipe xargs disk-usage
假设我有一个包含多个子目录的目录,每个子目录都包含一些文件:
1/a.txt
1/b.txt
2/c.txt
2/d.txt
3/e.txt
3/f.txt
Run Code Online (Sandbox Code Playgroud)
我想查看每个文件的大小。请记住,我知道有更简单、更直接的方法可以做到这一点,例如du -a
. 我只是想知道为什么以下不起作用,出于教育目的。
运行find .
返回所有文件和目录的列表,所以我尝试像这样管道它:
find . | xargs du
Run Code Online (Sandbox Code Playgroud)
但这只是返回目录 1、2 和 3 的大小。我缺少一些理解,因为在我看来xargs
应该将每一行输出映射find
到对du
.
如果我使用:
find . | xargs du -a
Run Code Online (Sandbox Code Playgroud)
然后它按预期工作,列出所有文件和目录的大小。如果我只使用该-type f
选项将文件列表传递给它,它也可以正常工作,因此它与接收与文件混合的目录列表有关。
这里发生了什么?
发生的事情是xargs
将(如果可以的话)所有名称放在一个命令行上,因此您只能看到一个命令传递给du
. 然后du
忽略文件名(如您所料:文件是目录的一部分,它不会计算两次)。
如果您使用-n 1
参数 to xargs
,它将拆分命令,您将看到更多您期望的内容。
find . | xargs -n 1 du -a
归档时间: |
|
查看次数: |
6996 次 |
最近记录: |