本文目录导读:

Linux/Mac 命令行
使用 du 命令
# 统计当前目录大小(人类可读格式) du -sh . # 统计指定文件夹大小 du -sh /path/to/folder # 统计所有子文件夹的大小 du -sh * / # 按大小排序显示 du -sh * | sort -rh
使用 ncdu(更友好的交互式工具)
# 安装 sudo apt install ncdu # Ubuntu brew install ncdu # Mac # 使用 ncdu /path/to/folder
Shell 脚本
#!/bin/bash
# folder_size.sh
target_dir="${1:-.}" # 默认当前目录
if [ -d "$target_dir" ]; then
echo "统计文件夹: $target_dir"
echo "大小: $(du -sh "$target_dir" | cut -f1)"
echo "文件数: $(find "$target_dir" -type f | wc -l)"
echo "目录数: $(find "$target_dir" -type d | wc -l)"
else
echo "错误: 文件夹不存在"
exit 1
fi
Python 脚本
# folder_size.py
import os
import sys
from pathlib import Path
def get_folder_size(folder_path):
"""递归计算文件夹大小"""
total_size = 0
folder = Path(folder_path)
if not folder.exists():
print(f"错误: 文件夹 {folder_path} 不存在")
return None
for item in folder.rglob('*'):
if item.is_file():
try:
total_size += item.stat().st_size
except (OSError, PermissionError):
pass
return total_size
def format_size(size_bytes):
"""格式化文件大小"""
for unit in ['B', 'KB', 'MB', 'GB', 'TB']:
if size_bytes < 1024:
return f"{size_bytes:.2f} {unit}"
size_bytes /= 1024
return f"{size_bytes:.2f} PB"
if __name__ == "__main__":
target = sys.argv[1] if len(sys.argv) > 1 else "."
size = get_folder_size(target)
if size is not None:
print(f"文件夹: {target}")
print(f"大小: {format_size(size)}")
# 显示文件/目录数量
folder = Path(target)
files = sum(1 for _ in folder.rglob('*') if _.is_file())
dirs = sum(1 for _ in folder.rglob('*') if _.is_dir())
print(f"文件数: {files}")
print(f"目录数: {dirs}")
更高效的 Python 版本(使用 os.walk)
import os
import sys
def get_folder_size_fast(folder_path):
"""使用 os.walk 快速计算"""
total_size = 0
file_count = 0
dir_count = 0
if not os.path.exists(folder_path):
print(f"错误: 文件夹 {folder_path} 不存在")
return None
for dirpath, dirnames, filenames in os.walk(folder_path):
dir_count += 1
for f in filenames:
fp = os.path.join(dirpath, f)
try:
total_size += os.path.getsize(fp)
file_count += 1
except (OSError, FileNotFoundError):
pass
return total_size, file_count, dir_count
# 使用示例
if __name__ == "__main__":
target = sys.argv[1] if len(sys.argv) > 1 else "."
result = get_folder_size_fast(target)
if result:
size, files, dirs = result
# 格式化输出
print(f"文件夹: {target}")
print(f"大小: {size/1024/1024:.2f} MB")
print(f"文件数: {files}")
print(f"目录数: {dirs}")
Windows PowerShell
# 统计文件夹大小
$folder = "C:\Path\To\Folder"
$size = (Get-ChildItem -Path $folder -Recurse | Measure-Object -Property Length -Sum).Sum
Write-Host "文件夹大小: $(($size / 1MB).ToString('F2')) MB"
# 或者使用更详细的脚本
function Get-FolderSize {
param([string]$Path = ".")
$items = Get-ChildItem -Path $Path -Recurse
$size = ($items | Measure-Object -Property Length -Sum).Sum
$files = ($items | Where-Object {!$_.PSIsContainer}).Count
$dirs = ($items | Where-Object {$_.PSIsContainer}).Count
Write-Host @"
文件夹: $Path
大小: $(($size / 1MB).ToString('F2')) MB
文件数: $files
目录数: $dirs
"@
}
Get-FolderSize "C:\YourFolder"
跨平台 Node.js 脚本
// folder_size.js
const fs = require('fs');
const path = require('path');
function getFolderSize(folderPath) {
let totalSize = 0;
let files = 0;
let dirs = 0;
function walk(dir) {
const items = fs.readdirSync(dir);
dirs++;
items.forEach(item => {
const fullPath = path.join(dir, item);
const stat = fs.statSync(fullPath);
if (stat.isDirectory()) {
walk(fullPath);
} else {
totalSize += stat.size;
files++;
}
});
}
walk(folderPath);
return { size: totalSize, files, dirs };
}
// 使用
const result = getFolderSize('.');
console.log(`大小: ${(result.size / 1024 / 1024).toFixed(2)} MB`);
console.log(`文件: ${result.files}, 目录: ${result.dirs}`);
使用建议
- 快速统计:使用
du -sh命令 - 详细统计:使用 Python 或 Node.js 脚本
- 交互式查看:使用
ncdu工具 - 跨平台:使用 Python 脚本(几乎任何系统都支持)
选择哪种方法取决于你的具体需求和操作系统环境。
版权声明:NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播