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
我有很多日志文件,它们都是唯一的文件名,但是根据大小,很多都是完全相同的内容(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