Golang磁盘空间分析工具 - Tdu v1.32 使用指南

Golang磁盘空间分析工具 - Tdu v1.32 使用指南 您想知道是什么占用了您的磁盘空间吗?

这个命令行工具可以估算指定路径下所有文件占用的磁盘空间。它会显示按大小排序的最大项目列表。估算方法类似于 GNU Coreutils 包中的 ‘du -skx’ 命令。

自版本 1.30 以来的新功能:

  • 添加以人类可读格式打印大小的选项
  • 统计空目录
  • 添加列出空目录的选项
  • 添加列出访问被拒绝目录的选项
  • 添加列出套接字和命名管道的选项
  • 添加列出字符设备和块设备的选项
  • 添加显示文件状态错误的选项

完整更新日志:https://bitbucket.org/josephpaul0/tdu/src/master/Changelog

请发送您的反馈和建议! macOS 和 FreeBSD 开发者,我需要您的帮助。

适用于 Linux 和 Windows 的即用型软件包位于:https://bitbucket.org/josephpaul0/tdu/downloads/ 源代码:https://bitbucket.org/josephpaul0/tdu


更多关于Golang磁盘空间分析工具 - Tdu v1.32 使用指南的实战教程也可以访问 https://www.itying.com/category-94-b0.html

4 回复

目前没有新的Windows版本发布 😉

更多关于Golang磁盘空间分析工具 - Tdu v1.32 使用指南的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


Windows版本现已可供下载!🌞

我会尽力在本周六(2019-05-18)之前提供新的Windows版本发布 😉

以下是关于 Tdu v1.32 磁盘空间分析工具的使用指南和示例代码。Tdu 是一个高效的命令行工具,用于分析磁盘空间使用情况,类似于 GNU Coreutils 的 du 命令,但提供了更多选项来定制输出。

基本用法

首先,从下载页面获取适用于您操作系统的预编译二进制文件(Linux 或 Windows),或从源代码编译。假设您已将 Tdu 添加到系统 PATH 中,基本命令如下:

tdu /path/to/directory

这将分析指定路径并显示按大小排序的文件和目录列表,单位为 KB(类似于 du -skx)。

新功能示例

Tdu v1.32 引入了多个选项,以下是如何使用这些功能的示例:

  1. 以人类可读格式打印大小:使用 -h 选项,使输出更易读(例如,显示 MB、GB)。

    tdu -h /path/to/directory
    

    输出示例:

    4.2G  /path/to/directory/large_file
    1.5M  /path/to/directory/small_file
    
  2. 统计和列出空目录:使用 -e 选项统计空目录,-E 选项列出所有空目录。

    tdu -e /path/to/directory  # 统计空目录数量
    tdu -E /path/to/directory  # 列出空目录的路径
    
  3. 列出访问被拒绝的目录:使用 -d 选项,显示因权限问题无法访问的目录。

    tdu -d /path/to/directory
    
  4. 列出特殊文件类型:使用 -s 选项包括套接字和命名管道,-c 选项包括字符设备和块设备。

    tdu -s /path/to/directory  # 列出套接字和命名管道
    tdu -c /path/to/directory  # 列出字符设备和块设备
    
  5. 显示文件状态错误:使用 -f 选项,报告在文件统计过程中遇到的错误(如损坏的符号链接)。

    tdu -f /path/to/directory
    

组合选项示例

您可以组合多个选项以获得详细输出。例如,以下命令以人类可读格式分析目录,并列出空目录和访问被拒绝的项:

tdu -h -E -d /path/to/directory

在 Go 中集成 Tdu 的示例代码

如果您想在 Go 程序中使用类似功能,可以使用 osfilepath 标准库实现一个简单的磁盘空间分析器。以下是一个基本示例,它遍历目录并计算文件大小(注意:这只是一个简化版本,Tdu 工具更优化):

package main

import (
    "fmt"
    "os"
    "path/filepath"
    "sort"
)

type FileInfo struct {
    Path string
    Size int64
}

func main() {
    root := "/path/to/directory" // 替换为您的目录路径
    var files []FileInfo

    err := filepath.Walk(root, func(path string, info os.FileInfo, err error) error {
        if err != nil {
            fmt.Printf("Error accessing %s: %v\n", path, err)
            return nil // 跳过错误,继续遍历
        }
        if !info.IsDir() {
            files = append(files, FileInfo{Path: path, Size: info.Size()})
        }
        return nil
    })
    if err != nil {
        fmt.Printf("Error walking the path %s: %v\n", root, err)
        return
    }

    // 按大小降序排序
    sort.Slice(files, func(i, j int) bool {
        return files[i].Size > files[j].Size
    })

    // 打印前10个最大文件
    for i, file := range files {
        if i >= 10 {
            break
        }
        fmt.Printf("%s: %d bytes\n", file.Path, file.Size)
    }
}

此代码遍历指定目录,收集文件大小并排序输出。对于生产环境,建议直接使用 Tdu 工具,因为它经过优化并支持更多功能。

Tdu 是一个强大的工具,特别适合系统管理员和开发者快速识别磁盘使用热点。如果您遇到问题,请参考源代码或提交反馈到项目页面。

回到顶部