文档章节

使用 Find 命令来帮你找到那些需要清理的文件

白志华
 白志华
发布于 2015/09/16 22:55
字数 934
阅读 21
收藏 0

    我见过的一种解决问题的方法是建议使用者将所有的数据碎屑创建一个文件集合的总结报告或"概况",来报告诸如所有的文件数量;最老的,最新的,最大的文件;并统计谁拥有这些文件等数据。如果有人看到五年前的一个包含五十万个文件的文件夹,他们可能会去删除哪些文件 -- 或者,至少会归档和压缩。主要问题是太大的文件夹会使人担心误删一些重要的东西。如果有一个描述文件夹的方法能帮助显示文件的性质,那么你就可以去清理它了。

    当我准备做 Unix 文件系统的总结报告时,几个有用的 Unix 命令能提供一些非常有用的统计信息。要计算目录中的文件数,你可以使用这样一个 find 命令。

$ find . -type f | wc -l
187534

    虽然查找最老的和最新的文件是比较复杂,但还是相当方便的。在下面的命令,我们使用 find 命令再次查找文件,以文件时间排序并按年-月-日的格式显示,在列表顶部的显然是最老的。

在第二个命令,我们做同样的,但打印的是最后一行,这是最新的。

$ find -type f -printf '%T+ %p\n'| sort | head -n 1
2006-02-03+02:40:33./skel/.xemacs/init.el
$ find -type f -printf '%T+ %p\n'| sort | tail -n 1
2015-07-19+14:20:16./.bash_history

    printf 命令输出 %T(文件日期和时间)和 %P(带路径的文件名)参数。

    如果我们在查找家目录时,无疑会发现,history 文件(如 .bash_history)是最新的,这并没有什么用。你可以通过 "un-grepping" 来忽略这些文件,也可以忽略以.开头的文件,如下图所示的。

$ find -type f -printf '%T+ %p\n'| grep -v "\./\."| sort | tail -n 1
2015-07-19+13:02:12./isPrime

    寻找最大的文件使用 %s(大小)参数,包括文件名(%f),因为这就是我们想要在报告中显示的。

$ find -type f -printf '%s %f \n'| sort -n | uniq | tail -1
20183040 project.org.tar

    统计文件的所有者,使用%u(所有者)

$ find -type f -printf '%u \n'| grep -v "\./\."| sort | uniq -c
180034 shs
7500 jdoe

    如果文件系统能记录上次的访问日期,也将是非常有用的,可以用来看该文件有没有被访问过,比方说,两年之内没访问过。这将使你能明确分辨这些文件的价值。这个最后访问(%a)参数这样使用:

$ find -type f -printf '%a+ %p\n'| sort | head -n 1
FriDec1503:00:302006+./statreport

    当然,如果大多数最近访问的文件也是在很久之前的,这看起来你需要处理更多文件了。

$ find -type f -printf '%a+ %p\n'| sort | tail -n 1
WedNov2603:00:272007+./my-notes

    要想层次分明,可以为一个文件系统或大目录创建一个总结报告,显示这些文件的日期范围、最大的文件、文件所有者们、最老的文件和最新访问时间,可以帮助文件拥有者判断当前有哪些文件夹是重要的哪些该清理了。


本文转载自:http://www.itworld.com/article/2949898/linux/profiling-your-file-systems.html

白志华
粉丝 33
博文 265
码字总数 57524
作品 0
长沙
程序员
私信 提问
如何轻松记住 Linux 命令

Linux 新手往往对命令行心存畏惧。部分原因是因为需要记忆大量的命令,毕竟掌握命令是高效使用命令行的前提。 不幸的是,学习这些命令并无捷径,然而在你开始学习命令之初,有些工具还是可以...

作者: Nick Congleton
2017/11/29
0
0
如何轻松记住 Linux 命令

原文出处: Nick Congleton 译文出处:Linux中国/DarkSun Linux 新手往往对命令行心存畏惧。部分原因是因为需要记忆大量的命令,毕竟掌握命令是高效使用命令行的前提。 不幸的是,学习这些命...

Nick Congleton
2017/11/30
0
0
SDKMAN:轻松管理多个软件开发套件 (SDK) 的命令行工具

你是否是一个经常在不同的 SDK 下安装和测试应用的开发者?我有一个好消息要告诉你!给你介绍一下 SDKMAN,一个可以帮你轻松管理多个 SDK 的命令行工具。它为安装、切换、列出和移除 SDK 提供...

作者: Sk
2018/11/07
0
0
驱动精灵 V9.61.314.1413 去广告绿色版

  驱动精灵去广告绿色版是一款简单易用的电脑驱动程序管理和维护工具软件。驱动精灵是帮助您解决繁琐的系统驱动问题的好工具,更是协助您发挥出电脑硬件最大效能的好助手。   驱动精灵可...

zgxahxm
2018/03/16
0
0
maven中进行junit测试报class not found的问题

初接触maven,maven的路径和常规的eclipse项目不是很一样,java文件放在src/main/java目录下,test文件放在src/test/java目录下,常规的测试方式是使用mvn test进行单元测试,但是使用eclip...

天高地厚宇宙无穷
2016/07/21
2
0

没有更多内容

加载失败,请刷新页面

加载更多

Redux

Redux概念 Redux = Reducer + Flux,数据层框架,将所有数据都存储到store中 Redux的工作流程 Antd的使用 安装npm install antd --save import 'antd/dist/antd.css'import { Input, Butto......

星闪海洋
今天
4
0
OSChina 周一乱弹 —— 你们谁看见了我的诺贝尔奖

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @脚板薯 :这么晚不睡只为找到一首歌,晚安。 ♫Say You Want Me♪ ♫Say You Want Me♪ - Augustana 手机党少年们想听歌,请使劲儿戳(这里)...

小小编辑
今天
436
17
我为什么要写微信公众号

埋一颗种子,细心呵护,静待她枝繁叶茂,葱郁参天 V2论坛上有个帖子【做程序员最重要的还是一定要有自己的作品】,作者写道: 能有一个作品和你的名字联系在一起,应当成为在职业生涯前期着意...

运维咖啡吧
今天
3
0
数据库

数据库架构 数据库架构可以分为存储文件系统和程序实例两大块,而程序实例根据不同的功能又可以分为如下小模块。 1550644570798 索引模块 常见的问题有: 为什么要使用索引 什么样的信息能成...

一只小青蛙
今天
5
0
PHP常用经典算法实现

<? //-------------------- // 基本数据结构算法 //-------------------- //二分查找(数组里查找某个元素) function bin_sch($array, $low, $high, $k){ if ( $low <= $high){ $mid = int......

半缘修道半缘君丶
昨天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部