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