如何在 /var/log/ 中查找小于 5 MB 的文件并显示文件大小?

如何在 /var/log/ 中查找小于 5 MB 的文件并显示文件大小?

我需要在 /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 }'

相关内容