du在我的系统上的默认行为不是正确的默认行为。
如果我ls我的/data文件夹,我会看到(删除不重要的内容):
ghs
ghsb -> ghs
hope
rssf -> roper
roper每个文件夹内都有一组以数字作为名称的文件夹。我希望获得名为14的所有文件夹的总大小,因此我使用:
du -s /data/*/14我看到了..。
161176 /data/ghs/14
161176 /data/ghsb/14
8 /data/hope/14
681564 /data/rssf/14
681564 /data/roper/14我只想:
161176 /data/ghs/14
8 /data/hope/14
681564 /data/roper/14我不想看到象征性的链接。我试过-L,-D,-S等等。我总是得到符号链接。有办法把它们移走吗?
发布于 2014-09-23 19:30:42
这不是解析符号链接的du,而是您的shell。
*是一个shell glob;它是在运行任何命令之前由shell展开的。因此,您正在运行的命令实际上是:
du -s /data/ghs/14 /data/ghsb/14 /data/hope/14 /data/rssf/14 /data/roper/14如果您的shell是bash,则无法告诉它不要扩展符号链接。但是,您可以使用find (GNU版本)来代替:
find /data -mindepth 2 -maxdepth 2 -type d -name 14 -exec du -s {} +发布于 2021-01-13 13:06:47
只需使用标志-L:
从手册页:
-L, --dereference
dereference all symbolic links然后du计算大小,不管它们是否具有象征意义。
发布于 2020-11-04 19:43:50
du -P-P,--不取消引用不要遵循任何符号链接(这是默认的)
https://unix.stackexchange.com/questions/157112
复制相似问题