regex - 在 Linux 中,名称与正则表达式匹配的文件的磁盘使用情况?

因此,在许多情况下,我想知道我的磁盘空间有多少被什么使用,所以我知道要摆脱什么、转换为另一种格式、存储在其他地方(例如数据 DVD)、移动到另一个分区等。在这种情况下,我正在查看来自 SliTaz Linux 的 Windows 分区。可启动媒体。

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

               

但在这种情况下,我想要一种方法来获取与正则表达式匹配的所有文件的大小。 .bak 文件的示例正则表达式:

.*\.bak$

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

编辑:输出旨在被脚本解析。

最佳答案

我建议类似: find 。 -regex '.*\.bak' -print0 | du --files0-from=- -ch |尾 -1

一些注意事项:

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

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

https://stackoverflow.com/questions/9485981/

相关文章:

python - 比较两个图像的 python/linux 方式

linux - Elasticsearch 无法写入日志文件

linux - 如何获取unix数据文件中每行的前n个字符

linux - 如何在 Linux/Unix 上递归复制以 "abc"开头的目录?

linux - 无法覆盖符号链接(symbolic link) RedHat Linux

linux - 尾部反转/打印除最后 n 行之外的所有内容?

linux - 如何列出附加到Linux中共享内存段的进程?

linux - 在 Linux 中的特定行向文件添加文本

linux - 如何从目录复制内容而不是符号链接(symbolic link)?

c - 为什么 mmap() 比顺序 IO 快?