Bash 根据大小过滤文件的脚本

Bash script to filter out files based on size

我有很多日志文件,它们都是唯一的文件名,但是根据大小,很多都是完全相同的内容(bot 生成的攻击)。

我需要过滤掉重复的文件大小或仅包含唯一的文件大小。 95% 不是唯一的,我可以看到文件大小,因此可以手动选择要过滤掉的大小。

我锻炼了

find . -size 48c | xargs ls -lSr -h

只会给我 48 字节的日志,可以继续使用此方法创建一长串包含的文件

uniq 不支持文件大小,据我所知

find 确实有一个 not 选项,这可能是我应该寻找的地方?

如何有效地过滤掉已知的重复项?

或者是否有其他方法仅根据唯一大小过滤和显示日志。

一个解决方案是:

find . -type f -ls | awk '!x[]++ {print }'

$7 是文件大小列; $11 是路径名。 由于您使用的是 find,因此我假设存在您不想列出的子目录。

awk 部分打印给定大小的第一个文件的路径(仅)。 HTH

您几乎成功了,这样做是否提供了解决方案:

find . -size 48c | xargs