答案1
使用:
find . -type f -size +4096c
查找大于 4096 字节的文件。
和 :
find . -type f -size -4096c
查找小于 4096 字节的文件。
注意尺寸切换后的 + 和 - 区别。
交换机-size
解释道:
-size n[cwbkMG]
File uses n units of space. The following suffixes can be used:
`b' for 512-byte blocks (this is the default if no suffix is
used)
`c' for bytes
`w' for two-byte words
`k' for Kilobytes (units of 1024 bytes)
`M' for Megabytes (units of 1048576 bytes)
`G' for Gigabytes (units of 1073741824 bytes)
The size does not count indirect blocks, but it does count
blocks in sparse files that are not actually allocated. Bear in
mind that the `%k' and `%b' format specifiers of -printf handle
sparse files differently. The `b' suffix always denotes
512-byte blocks and never 1 Kilobyte blocks, which is different
to the behaviour of -ls.
答案2
我认为find
单独使用可能有用,而不需要通过管道传输到 AWK。例如,
find ~ -type f -size +2k -exec ls -sh {} \;
波浪号表示您想要开始搜索的地方,结果应该只显示大于 2 千字节的文件。
为了使其更美观,您可以使用选项-exec
来执行另一个命令,该命令列出这些目录及其大小。
欲了解更多信息,请阅读手册页find
。
答案3
AWK 确实很容易处理这种事情。您可以用它进行以下与文件大小检查相关的操作,如您所问:
列出大于 200 字节的文件:
ls -l | awk '{if ($5 > 200) print $8}'
列出小于 200 字节的文件并将列表写入文件:
ls -l | awk '{if ($5 < 200) print $8}' | tee -a filelog
列出 0 字节的文件,将列表记录到文件并删除空文件:
ls -l | awk '{if ($5 == 0) print $8}' | tee -a deletelog | xargs rm