查找至少包含两个超过 100 MB 文件的文件夹?

查找至少包含两个超过 100 MB 文件的文件夹?

如何仅列出其中至少包含两个超过 100 MB 文件的文件夹?

答案1

findawk

列出所有> 100M的文件

$ find . -type f -size +100M
./bar/ok
./foo/okp
./foo/ok

现在过滤awk

$ find . -type f -size +100M -exec dirname {} + |
    awk '{dir[$0]++}END{for (i in dir) if (dir[i] >= 2) print i}'
./foo

根据要求,它仅输出至少包含两个大于 100M 文件的目录。

如果您的实现dirname不支持同时支持多个目录,请使用命令{} \;代替find

答案2

%h使用 GNU 工具,您可以打印所有大于 100MiB 的文件的目录 ( ),并使用 打印一次所有重复结果uniq -d
为了处理包含换行符的目录名称,我们使用 NUL 字符(\0和 option -z)作为行终止符,并在最后一步中将其转换为换行符。

find . -type f -size +100M -printf '%h\0' | uniq -dz | tr '\0' '\n'

要为每个结果添加找到的匹配数 (>=2) 前缀,请-c添加uniq

find . -type f -size +100M -printf '%h\0' | uniq -cdz | tr '\0' '\n'

相关内容