rclone 文件大小查看命令详解

一、命令速查表

命令功能默认递归人类可读适用场景
rclone ls列出文件大小和路径✅ 是❌ 需转换快速查看文件列表
rclone lsl列出修改时间、大小和路径✅ 是❌ 需转换需要时间信息的详细列表
rclone size统计总大小和文件数量✅ 是查看文件夹/远程的总存储量
rclone ncdu交互式磁盘占用分析✅ 是找大文件、分析存储分布
rclone lsjsonJSON 格式输出❌ 否❌ 需转换脚本处理、程序调用
rclone lsf自定义格式输出❌ 否❌ 需转换灵活格式化、脚本处理
rclone tree树形结构显示✅ 是❌ 需转换可视化目录结构

二、常用命令详解

2.1 rclone ls — 列出文件大小和路径

最基本的列表命令,显示文件大小(字节)和路径。

rclone ls zgdrive:/backup/

输出示例:

60295 backup.tar.xz
90613 config.yml
94467 data.enc

常用参数

# 限制递归深度
rclone ls zgdrive:/backup/ --max-depth 2

# 只显示大于10M的文件
rclone ls zgdrive:/backup/ --min-size 10M

# 只显示小于1M的文件
rclone ls zgdrive:/backup/ --max-size 1M

# 只显示目录
rclone ls zgdrive:/backup/ --dirs-only

2.2 rclone lsl — 列出时间、大小和路径

ls 多了修改时间信息。

rclone lsl zgdrive:/backup/

输出示例:

60295 2026-01-20 10:30:15.123456789 backup.tar.xz
90613 2026-01-19 15:22:08.987654321 config.yml

2.3 rclone size — 统计总大小和文件数量 ⭐推荐

最常用的统计命令,直接告诉你总共有多大、有多少个文件,且自动使用人类可读单位

rclone size zgdrive:/backup/

输出示例:

Total objects: 156
Total size: 2.345 GiB (2517245952 Byte)

JSON 格式输出(便于脚本解析):

rclone size zgdrive:/backup/ --json

输出示例:

{
  "count": 156,
  "bytes": 2517245952
}

2.4 rclone ncdu — 交互式磁盘占用分析 ⭐推荐

当你想知道"到底什么占了这么多空间"时,这是最强大的工具。界面自动使用人类可读单位

rclone ncdu zgdrive:/

交互界面操作

按键功能
↑/↓上下移动选择
Enter进入目录
返回上级目录
s按大小排序(默认)
c按文件数量排序
d删除选中的文件/目录
q退出

2.5 rclone lsjson — JSON 格式输出(脚本处理)

输出完整的文件元数据,便于程序解析。

rclone lsjson zgdrive:/backup/

输出示例:

[
  {
    "Path": "backup.tar.xz",
    "Name": "backup.tar.xz",
    "Size": 60295,
    "MimeType": "application/x-xz",
    "ModTime": "2026-01-20T10:30:15.123456789Z",
    "IsDir": false
  }
]

常用参数

# 递归列出
rclone lsjson -R zgdrive:/backup/

# 包含哈希值
rclone lsjson --hash zgdrive:/backup/

# 只显示文件
rclone lsjson --files-only zgdrive:/backup/

# 只显示目录
rclone lsjson --dirs-only zgdrive:/backup/

2.6 rclone lsf — 自定义格式输出

输出格式高度可定制,适合脚本处理。

# 格式:大小+路径(用分号分隔)
rclone lsf --format "sp" zgdrive:/backup/

输出示例:

60295;backup.tar.xz
90613;config.yml

格式字符说明

字符含义
p路径
s文件大小(字节)
t修改时间
h哈希值
i对象ID
mMIME类型

更多示例

# CSV格式
rclone lsf --csv --format "p,s,t" zgdrive:/backup/

# 只显示目录
rclone lsf --dirs-only zgdrive:/backup/

# 递归列出
rclone lsf -R zgdrive:/backup/

2.7 rclone tree — 树形结构显示

以树形图展示目录结构。

rclone tree zgdrive:/backup/

输出示例:

/
├── backup.tar.xz
├── config.yml
└── data
    ├── file1.txt
    └── file2.txt

带文件大小(仍为字节,不够友好):

rclone tree -s zgdrive:/backup/

输出示例:

/
├── [    60295]  backup.tar.xz
├── [    90613]  config.yml
└── data
    ├── [     1024]  file1.txt
    └── [     2048]  file2.txt

三、人类可读格式转换

3.1 方法一:rclone sizerclone ncdu(自动支持)

# 自动使用最合适的单位
rclone size zgdrive:/backup/

# 交互式界面自动显示人类可读
rclone ncdu zgdrive:/

3.2 方法二:使用 numfmt 转换

# 安装 numfmt(GNU coreutils 自带,通常已安装)
# 如未安装:sudo apt install coreutils

# 转换单列
rclone ls zgdrive:/backup/ | numfmt --to=iec --field=1

# 保持列对齐
rclone ls zgdrive:/backup/ | numfmt --to=iec --field=1 | column -t

numfmt 参数说明

参数说明示例输出
--to=iecIEC 单位(1024进制)59K2.3M1.2G
--to=siSI 单位(1000进制)60kB2.3MB1.2GB
--field=1转换第1列
--format=%.2f保留2位小数59.23K

3.3 方法三:使用 awk 自定义脚本

rclone ls zgdrive:/backup/ | awk '{
    size = $1
    if (size >= 1073741824)
        printf "%.2f GiB\t%s\n", size/1073741824, $2
    else if (size >= 1048576)
        printf "%.2f MiB\t%s\n", size/1048576, $2
    else if (size >= 1024)
        printf "%.2f KiB\t%s\n", size/1024, $2
    else
        printf "%d B\t%s\n", size, $2
}'

3.4 方法四:使用 jq 处理 JSON

# 列出文件并转换大小
rclone lsjson zgdrive:/backup/ | jq '.[] | {name: .Name, size: (.Size | tonumber | tostring + " bytes")}'

# 计算总大小(人类可读)
rclone size zgdrive:/backup/ --json | jq '.bytes' | numfmt --to=iec

四、实战场景

场景1:查看单个文件大小

# 方法1:使用 ls 并过滤
rclone ls zgdrive:/backup/backup.tar.xz

# 方法2:使用 lsl(带时间信息)
rclone lsl zgdrive:/backup/backup.tar.xz

# 方法3:人类可读格式
rclone ls zgdrive:/backup/backup.tar.xz | numfmt --to=iec --field=1

场景2:查看整个远程的总存储量

# 最简单直接
rclone size zgdrive:/

# JSON格式(脚本用)
rclone size zgdrive:/ --json

场景3:找出最大的10个文件

# 方法1:使用 ls + sort
rclone ls zgdrive:/ --max-depth 5 | sort -rn -k1 | head -10

# 方法2:人类可读输出
rclone ls zgdrive:/ --max-depth 5 | sort -rn -k1 | head -10 | numfmt --to=iec --field=1 | column -t

场景4:查看特定文件夹大小

rclone size zgdrive:/backup/2026/

场景5:交互式分析存储空间(找大文件)

rclone ncdu zgdrive:/

场景6:列出所有目录及其大小(脚本用)

rclone lsf -R --dirs-only --format "sp" zgdrive:/

场景7:按大小筛选文件

# 大于 100MB 的文件
rclone ls zgdrive:/ --min-size 100M

# 小于 10MB 的文件
rclone ls zgdrive:/ --max-size 10M

# 大小在 1MB 到 10MB 之间
rclone ls zgdrive:/ --min-size 1M --max-size 10M

五、实用脚本

脚本1:列出所有文件(人类可读大小)

#!/bin/bash
# 用法:./list_with_size.sh zgdrive:/backup/

REMOTE="${1:-zgdrive:/}"

rclone ls "$REMOTE" | while read size path; do
    human_size=$(numfmt --to=iec $size 2>/dev/null || echo "$size B")
    printf "%-8s %s\n" "$human_size" "$path"
done

脚本2:找出最大的N个文件

#!/bin/bash
# 用法:./find_large.sh zgdrive:/backup/ 20

REMOTE="${1:-zgdrive:/}"
TOP_N="${2:-10}"

rclone ls "$REMOTE" | sort -rn -k1 | head -"$TOP_N" | while read size path; do
    human_size=$(numfmt --to=iec $size)
    printf "%-8s %s\n" "$human_size" "$path"
done

脚本3:目录大小汇总(支持多级)

#!/bin/bash
# 用法:./dir_summary.sh zgdrive:/backup/

REMOTE="${1:-zgdrive:/}"

for dir in $(rclone lsf --dirs-only "$REMOTE"); do
    size=$(rclone size "${REMOTE}${dir}" --json | jq '.bytes')
    human_size=$(numfmt --to=iec $size)
    printf "%-20s %s\n" "${dir%/}" "$human_size"
done | sort -rn -k2

六、注意事项

注意点说明
API 限流大型远程(特别是 Google Drive)有 API 请求限制,扫描大量文件时可能需要较长时间
特殊后端Google Photos、Google Docs 等不提供文件大小,rclone 会将其计为空文件并输出警告
递归深度lslslsizencdu 默认递归;lsflsjson 默认不递归,需加 -R
人类可读只有 sizencdu 默认支持人类可读,其他命令需用 numfmt 或脚本转换

七、快速参考卡片

# 快速查看总大小(最常用)
rclone size remote:path

# 交互式分析(找大文件)
rclone ncdu remote:path

# 列出文件(字节)
rclone ls remote:path

# 列出文件(人类可读)
rclone ls remote:path | numfmt --to=iec --field=1 | column -t

# 树形结构
rclone tree -s remote:path

# JSON格式(脚本用)
rclone lsjson remote:path

# 自定义格式(脚本用)
rclone lsf --format "sp" remote:path

# 按大小筛选
rclone ls remote:path --min-size 100M --max-size 1G

八、单位换算参考

单位字节数numfmt --to=iecnumfmt --to=si
1 KB / 1 KiB10241.0K1.0kB
1 MB / 1 MiB1,048,5761.0M1.0MB
1 GB / 1 GiB1,073,741,8241.0G1.0GB
1 TB / 1 TiB1,099,511,627,7761.0T1.0TB

标签: none

添加新评论