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

时间:2017-04-29 04:05:48

标签: bash shell logging filtering uniq

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

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

我已经解决了

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

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

据我所知,

uniq不支持文件大小

find确实有not选项,这可能是我应该看的地方吗?

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

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

2 个答案:

答案 0 :(得分:1)

一个解决方案是:

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

$ 7是filesize列; 11美元是路径名。 由于您使用find我假设有子目录,您不想列出。

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

答案 1 :(得分:0)

你几乎拥有它,确实会提供解决方案:

find . -size 48c | xargs