云服务器上使用 Ubuntu 命令
1. 查看磁盘占用情况从小到大排序du --max-depth1 -h | sort -h2. 将当前目录下的内容全部打包tar -cvf download.tar .3. 划定基线的打包程序tar.py#!/usr/bin/env python3 按大小过滤的打包脚本 用法: python tar.py [--max200] [--pathpath/] [--zip] 功能: 将目标目录打包为 tar 或 tar.gz如果指定了 --max则排除单个文件大小超过该阈值的文件。 import os import sys import tarfile import argparse from pathlib import Path # 尝试导入 tqdm如果失败则使用自定义简单进度条 try: from tqdm import tqdm HAS_TQDM True except ImportError: HAS_TQDM False # 自定义简单进度条 def simple_progress_bar(iterable, total, desc进度): 简单的文本进度条实现 bar_len 40 sys.stdout.write(f{desc}: 0%) sys.stdout.flush() for i, item in enumerate(iterable, 1): yield item if i % max(1, total // 100) 0 or i total: percent i / total filled int(bar_len * percent) bar █ * filled - * (bar_len - filled) sys.stdout.write(f\r{desc}: |{bar}| {percent*100:.1f}% ({i}/{total})) sys.stdout.flush() sys.stdout.write(\n) def get_total_files_and_size(src_dir): 遍历目录统计总文件数和总大小用于进度条估算 返回: (总文件数, 总字节数) total_files 0 total_size 0 for root, dirs, files in os.walk(src_dir): for file in files: file_path os.path.join(root, file) try: total_size os.path.getsize(file_path) total_files 1 except OSError: pass return total_files, total_size def should_include(file_path, max_size_bytes): 判断文件是否应该被打包。 返回 True 表示打包False 表示跳过。 if os.path.isdir(file_path): return True try: file_size os.path.getsize(file_path) if max_size_bytes is not None and file_size max_size_bytes: return False except OSError: return False return True def main(): parser argparse.ArgumentParser( description打包目录可选择跳过超过指定大小的文件 ) parser.add_argument( --max, typeint, defaultNone, help文件大小阈值单位 MB例如 200 表示 200MB。缺省时不限制大小。 ) parser.add_argument( --path, typestr, default., help要打包的目标目录路径缺省为当前目录 ) parser.add_argument( --zip, -z, actionstore_true, help开启 gzip 压缩输出 .tar.gz 格式 (默认输出 .tar不压缩) ) args parser.parse_args() src_dir os.path.abspath(args.path) if not os.path.isdir(src_dir): print(f错误: 路径 {src_dir} 不是有效的目录) sys.exit(1) max_bytes args.max * 1024 * 1024 if args.max is not None else None dir_name os.path.basename(src_dir.rstrip(/\\)) # 根据是否压缩决定输出文件名和打开模式 if args.zip: output_filename f{dir_name}_filtered.tar.gz if args.max is not None else f{dir_name}.tar.gz tar_mode w:gz # gzip 压缩 compress_desc gzip 压缩 else: output_filename f{dir_name}_filtered.tar if args.max is not None else f{dir_name}.tar tar_mode w # 不压缩 compress_desc 不压缩 output_path os.path.join(os.getcwd(), output_filename) print(f目标目录: {src_dir}) if max_bytes is not None: print(f阈值: {args.max} MB ({max_bytes} bytes)) else: print(阈值: 无限制 (打包所有文件)) print(f压缩: {compress_desc}) print(f输出文件: {output_path}) # 统计总文件数和总大小用于进度条估算 print(正在扫描目录...) total_files, total_size get_total_files_and_size(src_dir) print(f总文件数: {total_files}, 总大小: {total_size/(1024*1024):.2f} MB) skipped_count 0 skipped_size 0 try: with tarfile.open(output_path, tar_mode) as tar: # 准备文件列表用于进度条遍历 file_list [] for root, dirs, files in os.walk(src_dir): for file in files: file_list.append(os.path.join(root, file)) # 根据是否安装 tqdm 选择进度条实现 if HAS_TQDM: print(使用 tqdm 进度条) iterator tqdm(file_list, desc打包进度, unitfile) else: print(使用标准进度条 (提示: 安装 tqdm 获得更美观的进度条: pip install tqdm)) iterator simple_progress_bar(file_list, totallen(file_list), desc打包进度) for file_path in iterator: arcname os.path.relpath(file_path, startos.path.dirname(src_dir)) if should_include(file_path, max_bytes): try: if HAS_TQDM: iterator.set_postfix_str(f当前: {os.path.basename(file_path)}) tar.add(file_path, arcnamearcname) except Exception as e: print(f\n警告: 添加文件失败 {file_path}: {e}) else: skipped_count 1 try: skipped_size os.path.getsize(file_path) except OSError: pass print(f\n打包完成: {output_path}) if skipped_count 0: print(f跳过了 {skipped_count} 个文件总计 {skipped_size/(1024*1024):.2f} MB) except Exception as e: print(f打包失败: {e}) sys.exit(1) if __name__ __main__: main()4. 文件递归排序filesize_sort.py#!/usr/bin/env python3 文件大小排序工具 遍历指定目录按文件大小从大到小排序并输出路径、大小和累积百分比 用法: python filesize_sort.py [--pathpath/] [--topN] [--reverse] import os import sys import argparse from pathlib import Path def human_readable_size(size_bytes): 将字节数转换为人类可读的格式KB, MB, GB 返回格式: 1.23 GB if size_bytes 0: return 0 B units [B, KB, MB, GB, TB, PB] unit_index 0 temp size_bytes while temp 1024 and unit_index len(units) - 1: temp / 1024 unit_index 1 if unit_index 0: return f{size_bytes} B else: return f{temp:.2f} {units[unit_index]} def get_file_info(src_dir, exclude_dirsNone): 遍历目录收集所有文件的信息路径和大小 if exclude_dirs is None: exclude_dirs [] file_list [] src_dir os.path.abspath(src_dir) if not os.path.isdir(src_dir): print(f错误: 路径 {src_dir} 不是有效的目录) sys.exit(1) for root, dirs, files in os.walk(src_dir): dirs[:] [d for d in dirs if d not in exclude_dirs] for file in files: file_path os.path.join(root, file) try: size os.path.getsize(file_path) file_list.append((file_path, size)) except OSError: print(f警告: 无法读取文件大小跳过: {file_path}) return file_list def main(): parser argparse.ArgumentParser( description遍历目录按文件大小排序输出含累积百分比 ) parser.add_argument( --path, typestr, default., help要遍历的目标目录路径缺省为当前目录 ) parser.add_argument( --top, typeint, defaultNone, help只显示前 N 个最大的文件 ) parser.add_argument( --reverse, -r, actionstore_true, help按从小到大排序默认从大到小 ) parser.add_argument( --exclude, typestr, nargs*, default[.git, __pycache__, node_modules, .idea, .vscode], help要排除的目录名称空格分隔缺省排除常见缓存目录 ) parser.add_argument( --bytes, -b, actionstore_true, help以字节数显示不转换为 KB/MB/GB ) parser.add_argument( --no-percent, actionstore_true, help不显示累积百分比列 ) args parser.parse_args() src_dir os.path.abspath(args.path) print(f正在扫描目录: {src_dir}) print(f排除目录: {args.exclude if args.exclude else 无}) file_list get_file_info(src_dir, args.exclude) if not file_list: print(没有找到任何文件) return # 按文件大小排序默认从大到小 reverse_sort not args.reverse file_list.sort(keylambda x: x[1], reversereverse_sort) total_size sum(size for _, size in file_list) # 如果指定了 --top只取前 N 个 display_list file_list[:args.top] if args.top is not None else file_list print(\n * 100) # 计算列宽 max_path_len max(len(path) for path, _ in display_list) if display_list else 0 max_path_len min(max_path_len, 50) # 根据是否显示百分比决定列头 if args.no_percent: header f{文件路径:{max_path_len}} {大小:15} else: header f{文件路径:{max_path_len}} {大小:15} {累积占比:12} print(header) print(- * 100) # 累积大小从大到小累加 cumulative_size 0 for idx, (file_path, size) in enumerate(display_list): cumulative_size size # 显示路径如果太长则截断 display_path file_path if len(file_path) max_path_len else ... file_path[-(max_path_len-3):] # 格式化大小 if args.bytes: size_str f{size:,} B else: size_str human_readable_size(size) # 计算累积百分比 if args.no_percent: print(f{display_path:{max_path_len}} {size_str:15}) else: cum_percent (cumulative_size / total_size) * 100 if total_size 0 else 0 # 如果当前文件是最后一个百分比应为100% if idx len(display_list) - 1: cum_percent 100.0 print(f{display_path:{max_path_len}} {size_str:15} {cum_percent:11.2f}%) print(- * 100) # 统计信息 if args.bytes: total_str f{total_size:,} B else: total_str human_readable_size(total_size) displayed_count len(display_list) total_count len(file_list) if args.top is not None: print(f显示: {displayed_count}/{total_count} 个文件, 总大小: {total_str}) if not args.no_percent and display_list: # 显示前 N 个文件的占比 top_percent (cumulative_size / total_size) * 100 print(f前 {displayed_count} 个文件占总大小的: {top_percent:.2f}%) else: print(f总计: {displayed_count} 个文件, 总大小: {total_str}) if __name__ __main__: main()5. 解压当下所有的 tar 包# 最简单的写法 for f in *.tar; do tar -xvf $f; done # 带解压进度显示 for f in *.tar; do echo 解压 $f; tar -xvf $f; done6. tar 打包的时候排除指定文件或者文件夹# 排除单个文件 tar -czf archive.tar.gz --excludefile.txt myfolder/ # 排除多个文件 tar -czf archive.tar.gz --excludefile1.txt --excludefile2.txt myfolder/7. time 命令统计命令运行的时间# 格式为 time /dev/null 21 # 比如统计解压需要多久时 time for f in *.tar; do tar -xvf $f; done /dev/null 21 # 结果如下 # real 114m3.195s # user 0m48.234s # sys 16m32.489s # real user sys 的含义分别为 实际耗时墙上时钟时间、user - 用户态 CPU 时间、sys - 内核态 CPU 时间

相关新闻

TI CCS深度调试指南:从多核异构SoC基础调试到高级追踪与性能剖析

TI CCS深度调试指南:从多核异构SoC基础调试到高级追踪与性能剖析

1. 项目概述与调试价值 在嵌入式系统开发,尤其是汽车电子和工业控制这类对实时性与可靠性要求极高的领域,调试从来都不是一个可选项,而是贯穿整个开发周期的核心活动。想象一下,你精心编写的算法在仿真器上运行完美,但…

2026/7/23 20:47:22阅读更多 →
modbus快速入门

modbus快速入门

我的小站:Ean7的小站 1. Modbus 是什么? Modbus 是一种工业通信协议,用于 PLC、传感器、变频器、仪表、智能电表等设备之间交换数据。 它的特点: 简单 开放标准 工业应用非常广 主从结构(传统 Modbus RTU/TCP&am…

2026/7/23 20:47:22阅读更多 →
InsurAgent: A Large Language Model-Empowered Agent for Simulating Individual Behavior in Purchasi...

InsurAgent: A Large Language Model-Empowered Agent for Simulating Individual Behavior in Purchasi...

文章总结与翻译 一、主要内容 本文聚焦美国洪水保险参保率低(高风险区域仅18%参保)的问题,旨在通过大语言模型(LLM)赋能的智能体模拟个体洪水保险购买决策,揭示背后的行为机制。研究首先基于美国墨西哥湾沿岸居民的调查数据构建基准数据集,包含社会人口特征、房屋所有…

2026/7/23 20:47:22阅读更多 →
基于SpringBoot的大学生旅游平台的设计

基于SpringBoot的大学生旅游平台的设计

摘 要 在信息技术迅猛发展的大环境之下,大学生旅游市场上的消费行为表现出非常鲜明的多元化特点。传统的获取信息的途径已经不能适应现代用户对于高效率、社交属性旅行服务的要求。为了克服以上问题,本文使用Spring Boot框架来创建一个专门给大学生使用…

2026/7/23 22:09:38阅读更多 →
肌电数据处理实战08:真实面部肌电fEMG情绪反应分析

肌电数据处理实战08:真实面部肌电fEMG情绪反应分析

肌电信号处理 Python 入门实战第 8 篇 数据来源:PeakAffectDS 真实公开数据集 数据集页面:https://zenodo.org/records/6403363 DOI:10.5281/zenodo.6403363 本案例使用真实采集的面部肌电信号,不使用模拟生成数据。 1. 为什么第 8 个案例要换成“面部肌电” 前 7 个案例已…

2026/7/23 22:09:38阅读更多 →
肌电数据处理实战07:真实步态 EMG 数据的下肢肌肉激活分析

肌电数据处理实战07:真实步态 EMG 数据的下肢肌肉激活分析

这一篇从零开始做一个完整的肌电信号处理实战:使用真实公开步态 EMG 数据,分析同一名受试者在不同跑台步行速度下,12 个下肢肌肉通道的激活强度、波动节律和整体特征分布。 本案例使用的数据不是模拟生成信号,而是 PhysioNet 公开数据集中的真实 EMG 激活序列: 数据集:A…

2026/7/23 22:09:38阅读更多 →
基于SpringBoot+微信小程序的校园二手物品交易平台设计与实现(闲置捐赠+配送预约)

基于SpringBoot+微信小程序的校园二手物品交易平台设计与实现(闲置捐赠+配送预约)

💗博主介绍:✌全网粉丝20W,CSDN全栈领域优质创作者,博客之星、掘金/华为云/阿里云等平台优质作者,计算机毕设实战导师。目前专注于大学生项目实战开发,讲解,毕业答疑辅导,欢迎高校老师/同行前辈交流合作✌ 💗主要服务内…

2026/7/23 22:09:38阅读更多 →
docker笔记2

docker笔记2

1.容器数据卷 用于容器内的数据在容器外(宿主机)的持久化和同步,相当于同一宿主机内的容器间的数据共享。(注意:新版用--mount) docker run -it -v [宿主机路径]:[容器内路径] [镜像名] docker ps 获取容…

2026/7/23 22:09:38阅读更多 →
紧急!生产环境AI生成代码触发CVE-2024-XXXXX漏洞(真实事故复盘):如何用RAG+规则引擎构建防御性生成层

紧急!生产环境AI生成代码触发CVE-2024-XXXXX漏洞(真实事故复盘):如何用RAG+规则引擎构建防御性生成层

更多请点击: https://kaifayun.com 第一章:紧急!生产环境AI生成代码触发CVE-2024-XXXXX漏洞(真实事故复盘):如何用RAG规则引擎构建防御性生成层 凌晨三点,某金融核心交易服务因AI辅助编码工具生…

2026/7/23 22:07:37阅读更多 →
Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…

2026/7/23 0:56:31阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/23 0:56:31阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击: https://intelliparadigm.com 第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/23 0:56:31阅读更多 →
Chitchatter完整指南:免费开源的终极点对点安全聊天工具

Chitchatter完整指南:免费开源的终极点对点安全聊天工具

Chitchatter完整指南:免费开源的终极点对点安全聊天工具 【免费下载链接】chitchatter Secure peer-to-peer chat that is serverless, decentralized, and ephemeral 项目地址: https://gitcode.com/gh_mirrors/ch/chitchatter Chitchatter是一款革命性的安…

2026/7/23 0:00:28阅读更多 →
从单点好评到指数级传播:AI副业主理人必须掌握的4层口碑渗透模型(含ROI测算表)

从单点好评到指数级传播:AI副业主理人必须掌握的4层口碑渗透模型(含ROI测算表)

更多请点击: https://intelliparadigm.com 第一章:从单点好评到指数级传播:AI副业主理人必须掌握的4层口碑渗透模型(含ROI测算表) 当AI副业主理人不再仅满足于单次服务交付,而是主动构建可复用、可裂变、可…

2026/7/23 0:00:28阅读更多 →
油泥处理设备哪里能买到

油泥处理设备哪里能买到

油泥处理设备哪里有?这是许多从事油田、炼化、清罐业务的从业者最关心的问题。根据河南三丰环保设备有限公司的行业经验,选购油泥处理设备的核心在于设备能否适配当地环保法规与原料特性,而非单纯看价格。该公司总经理王钦田先生指出&#xf…

2026/7/23 0:00:28阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/22 22:56:18阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/23 18:58:18阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/23 18:58:18阅读更多 →