博客 / Linux/ linux查找所有日志log文件&并按从大到小排序&按M或G为单位显示

linux查找所有日志log文件&并按从大到小排序&按M或G为单位显示

linux查找所有日志log文件&并按从大到小排序&按M或G为单位显示

查找所有日志文件并按大小排序

在 Linux 系统中,查找所有以 .log 结尾的文件,并按文件大小从大到小排序,可以使用以下命令组合:

find / -name "*.log" -type f 2>/dev/null | xargs ls -Slh

命令详解

  • find / -name "*.log" -type f 2>/dev/null
    • find /: 从根目录开始查找。
    • -name "*.log": 匹配所有以 .log 结尾的文件名。注意,通配符 * 必须用引号括起来,以防止 Shell 提前展开。
    • -type f: 只查找普通文件,排除目录、链接等。
    • 2>/dev/null: 将查找过程中产生的错误信息(如权限不足)重定向到空设备,使输出更清晰。
  • |
    • 管道符,将前一个命令(find)的标准输出传递给后一个命令(xargs)作为输入。
  • xargs
    • 将管道传递过来的文件路径列表,转换为 ls 命令的参数。
  • ls -Slh
    • -S: 按文件大小排序。
    • -l: 使用长列表格式,显示详细信息。
    • -h: 以人类易读的格式(如 K、M、G)显示文件大小。
    • 若需从小到大排序,可使用 -Slhr-Slr-r 表示反向排序)。

注意事项与替代方案

上述命令在文件路径包含空格或特殊字符时可能出错。更健壮的写法是使用 find-exec-print0 选项:

# 方法一:使用 -exec
echo "文件大小(K) 文件路径"
find / -name "*.log" -type f 2>/dev/null -exec ls -lh {} ; | sort -hr -k5

# 方法二:使用 -print0 处理特殊字符
find / -name "*.log" -type f 2>/dev/null -print0 | xargs -0 ls -Slh

方法一通过 sort -hr -k5ls -lh 输出的第5列(文件大小)进行反向排序,同样能实现按大小(人类可读格式)排序的效果,且兼容性更好。

发表评论

您的邮箱不会公开。必填项已用 * 标注。