所以,在很多情况下,我想知道我的磁盘空间有多少被什么占用,所以我知道要摆脱什么,转换成另一种格式,存储在其他地方(如数据DVD),移动到另一个分区,等等.在这种情况下,我看的是一个Windows分区,从一个SliTaz Linux可 bootstrap 的媒体.

在大多数情况下,我想要的是文件和文件夹的大小,为此,我使用基于NCurses的ncdu:

                ncdu

但在这种情况下,我想要一种方法来获得all files matching a regex的大小.一个示例regex.bak文件:

.*\.bak$

考虑到带有核心GNU实用程序或BusyBox的标准Linux,我如何获得这些信息?

Edit:输出旨在通过脚本进行解析.

推荐答案

我建议大约find . -regex '.*\.bak' -print0 | du --files0-from=- -ch | tail -1美元

注意:

  • find-print0选项和du--files0-from选项是为了避免文件名中的空白问题
  • 正则表达式与整个路径匹配,例如./dir1/subdir2/file.bak,而不仅仅是file.bak,因此如果修改它,请将其考虑在内
  • 我使用du的h标志来生成一个"人类可读"的格式,但是如果你想解析输出,最好使用k(总是使用千字节)
  • 如果删除tail命令,还将看到特定文件和目录的大小

旁注:一个很好的GUI工具,用于找出谁吃掉了你的磁盘空间是FileLight.它不做正则表达式,但对于查找阻塞磁盘的大目录或文件非常方便.

Linux相关问答推荐

使用信号处理程序实现Hibernate 功能

在64位Linux Mint 21.2 Mate上呈现nvim中的文本对象时出现问题

为什么 `std::this_thread::yield()` 比 `std::this_thread::sleep_for(0s)` 慢 10 倍?

X86 程序集 - struct 点 - 存储/返回不正确?

删除一行和它之前的一行

在 puppet 中管理 linux 的用户密码

DMA 和内存映射 IO 有什么区别?

Eclipse 的 C# 插件

隐藏文件 .env 未使用 Docker COPY 复制

如何在 shell 脚本中动态生成新的变量名?

从 shell 将多个 .sql 转储文件导入 mysql 数据库

如何在 Linux 中为 C 或 C++ 的进程设置 CPU 亲和性?

NGINX:connect() 到 unix:/var/run/php7.0-fpm.sock 失败(2:没有这样的文件或目录)

谁决定任何数据类型或 struct 的大小(取决于 32 位或 64 位)?

从核心转储中获取堆栈跟踪

如何使用 Linux 命令找到我的 shell 版本?

CentOS:在 PHP 安装中启用 GD 支持

Linux 的文本编辑器(除了 Vi)?

适用于 Windows、Linux、MacOS X 的跨平台脚​​本

编辑文件时保留 samba 共享的文件权限