【问题标题】:find with size option does not report correctly on busyboxfind with size 选项在busybox上没有正确报告
【发布时间】:2021-09-01 02:35:33
【问题描述】:

find 下面不太尊重-size 参数。我必须使用pipes 才能完成工作。我在某处读到一个大小与datablocks 相关的sn-p,并且正在进行舍入,但这对于size 来说远非明智......你在下面看到的
我的问题是具体的 - 这是一个皮肤 find 版本的 android aka 使用或者在运行它时我缺少一些东西。

find  /data/s*2/data -maxdepth 1 -mindepth 1 -type d  -size -10k |  sort

o/p

/data/sdext2/data/us.zoom.videomeetings
/data/sdext2/data/xeus.timbre

实际尺寸

/#du -hs /data/sdext2/data/us.zoom.videomeetings
16K /data/sdext2/data/us.zoom.videomeetings
/#du -hs /data/sdext2/data/xeus.timbre
2.2M    /data/sdext2/data/xeus.timbre
/#

我可以使用dupipe-exec 来完成这项工作,但这个Q 是关于使用单次通过的解决方案,就像find 提供的那样

.

更新:来自评论“请将每个文件的busybox stat的输出添加到您的问题中
这里是......

    /#busybox  stat /data/sdext2/data/us.zoom.videomeetings
  File: /data/sdext2/data/us.zoom.videomeetings
  Size: 4096        Blocks: 8          IO Block: 4096   directory
Device: b342h/45890d    Inode: 189044      Links: 4
Access: (0775/drwxrwxr-x)  Uid: (10325/ u0_a325)   Gid: (10325/ u0_a325)
Access: 2021-08-31 13:09:17.000000000 +0530
Modify: 2021-08-31 20:59:13.974177753 +0530
Change: 2021-08-31 20:59:13.974177753 +0530
/#busybox  stat /data/sdext2/data/xeus.timbre                                                                                        
  File: /data/sdext2/data/xeus.timbre
  Size: 4096        Blocks: 8          IO Block: 4096   directory
Device: b342h/45890d    Inode: 155677      Links: 13
Access: (0775/drwxrwxr-x)  Uid: (10341/ u0_a341)   Gid: (10341/ u0_a341)
Access: 2021-08-16 14:58:55.000000000 +0530
Modify: 2021-08-31 14:13:51.225999993 +0530
Change: 2021-08-31 17:34:57.068960585 +0530
/#

【问题讨论】:

  • 请将每个文件的busybox stat 的输出添加到您的问题中
  • 在 Q 中发布了 o/p 吗?
  • 好的,谢谢。无论如何,我们可以hs 使用大小过滤器(我的操作系统的du 不喜欢threshold op)-Single pass ( aka. pipleless )。我们可以这样做piped,我知道

标签: android performance shell find busybox


【解决方案1】:

find 行为正确。

您正在尝试检查-size 中的-type d

目录只是包含其他文件信息的文件。 [1]

当您运行 du -hs /data/sdext2/data/xeus.timbre 时,它会计算所有引用的文件和子目录(以及这些子目录引用的文件和子目录递归)使用的总大小,而不是 xeus.timbre 使用的大小本身(您的 stat 显示为 4096 字节)。


[1] 来自Wikipedia:

Unix 目录不包含文件。相反,它们包含文件的名称以及对所谓的 inode 的引用,这些索引节点又包含文件及其元数据(所有者、权限、上次访问时间等,但没有名称)。文件系统中的多个名称可能引用同一个文件,这种特性称为硬链接。

【讨论】:

  • 好的,谢谢。我们可以通过任何方式使用大小过滤器(我的操作系统的 du 不喜欢阈值操作) - 单通道(又名 pipleless)。我们可以做到这一点,我知道
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-02
  • 2019-08-16
  • 1970-01-01
相关资源
最近更新 更多