![如何在 /var/log/ 中查找小于 5 MB 的文件并显示文件大小?](https://linux22.com/image/1055720/%E5%A6%82%E4%BD%95%E5%9C%A8%20%2Fvar%2Flog%2F%20%E4%B8%AD%E6%9F%A5%E6%89%BE%E5%B0%8F%E4%BA%8E%205%20MB%20%E7%9A%84%E6%96%87%E4%BB%B6%E5%B9%B6%E6%98%BE%E7%A4%BA%E6%96%87%E4%BB%B6%E5%A4%A7%E5%B0%8F%EF%BC%9F.png)
我需要在 /var/log/ 中查找小于 5 MB 的文件,并且输出应显示每个文件的大小。我应该使用哪个命令?
答案1
/var/log
此命令将查找大小小于 5M 的文件和打印大小(以千字节为单位)以及文件名:
find /var/log -maxdepth 1 -size -5M -type f -printf '%5k %f\n'
示例输出可能如下所示:
112 syslog.6.gz
1048 messages.1
112 syslog.5.gz
120 syslog.7.gz
1216 syslog.1
怎么运行的
-maxdepth 1
告诉 find 不要进入子目录。(如果要包含子目录,请省略此项)-size -5M
告诉 find 将结果限制为小于 5M 的文件。-type f
告诉 find 仅查找常规文件。-printf '%5k %f\n'
告诉 find 为大小分配 5 个空格并以千字节为单位打印大小,后跟一个空格,后跟文件的名称。
答案2
这对我来说很好:
find /var/log/ -name * -size -5M -ls | awk '{ print $11 " has a size of " $7 }'
6 月 1 日更新:在较新的 Ubuntu Server 版本中不可-name *
用,但您现在可以使用以下命令:
find /var/log/ -type f -size -5M -ls | awk '{ print $11 " has a size of " $7 }'
如果你需要一个更人性化的可读版本,这个将是一个不错的选择
find /var/log/ -type f -size -5M -exec ls -lsh {} \; | awk '{ print $10 " has a size of " $1 }'