Linux系统中清理文件和清理环境变量的方法

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

  一个问题几乎困扰着所有的文件系统 -- 包括 Unix 和其他的 -- 那就是文件的不断积累。几乎没有人愿意花时间清理掉他们不再使用的文件和整理文件系统,结果,文件变得很混乱,很难找到有用的东西,要使它们运行良好、维护备份、易于管理,这将是一种持久的挑战。

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

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

  代码如下:

  $ find . -type f | wc -l

  187534

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

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

  代码如下:

  $ find -type f -printf '%T+ %pn' | sort | head -n 1

  2006-02-03+02:40:33 ./skel/.xemacs/init.el

  $ find -type f -printf '%T+ %pn' | 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+ %pn' | 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+ %pn' | sort | head -n 1

  Fri Dec 15 03:00:30 2006+ ./statreport

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

  代码如下:

  $ find -type f -printf '%a+ %pn' | sort | tail -n 1

  Wed Nov 26 03:00:27 2007+ ./my-notes

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

  如何在 Linux 上运行命令前临时清空 Bash 环境变量

  如何显示当前环境?

  打开终端应用程序并输入下面的其中一个命令:

  代码如下:

  printenv

  或

  代码如下:

  env

  输出样例:



  统计环境变量数目

  输入下面的命令:

  代码如下:

  env | wc -l

  printenv | wc -l # 或者

  输出样例:

  代码如下:

  20

  在干净的 bash/ksh/zsh 环境中运行程序

  语法如下所示:

  代码如下:

  env -i your-program-name-here arg1 arg2 ...

  例如,要在不使用 http_proxy 和/或任何其它环境变量的情况下运行 wget 程序。临时清除所有 bash/ksh/zsh 环境变量并运行 wget 程序:

  代码如下:

  env -i /usr/local/bin/wget www.cyberciti.biz

  env -i wget www.cyberciti.biz # 或者

  这当你想忽视任何已经设置的环境变量来运行命令时非常有用。我每天都会多次使用这个命令,以便忽视 http_proxy 和其它我设置的环境变量。

  例子:使用 http_proxy

  复制代码

  代码如下:

  $ wget www.cyberciti.biz

  --2015-08-03 23:20:23-- http://www.cyberciti.biz/

  Connecting to 10.12.249.194:3128... connected.

  Proxy request sent, awaiting response... 200 OK

  Length: unspecified [text/html]

  Saving to: 'index.html'

  index.html [ <=> ] 36.17K 87.0KB/s in 0.4s

  2015-08-03 23:20:24 (87.0 KB/s) - 'index.html' saved [37041]

  例子:忽视 http_proxy

  代码如下:

  $ env -i /usr/local/bin/wget www.cyberciti.biz

  --2015-08-03 23:25:17-- http://www.cyberciti.biz/

  Resolving www.cyberciti.biz... 74.86.144.194

  Connecting to www.cyberciti.biz|74.86.144.194|:80... connected.

  HTTP request sent, awaiting response... 200 OK

  Length: unspecified [text/html]

  Saving to: 'index.html.1'

  index.html.1 [ <=> ] 36.17K 115KB/s in 0.3s

  2015-08-03 23:25:18 (115 KB/s) - 'index.html.1' saved [37041]

  -i 选项使 env 命令完全忽视它继承的环境。但是,它并不会阻止你的命令(例如 wget 或 curl)设置新的变量。同时,也要注意运行 bash/ksh shell 的副作用:

  代码如下:

  env -i env | wc -l ## 空的 ##

  # 现在运行 bash ##

  env -i bash

  ## bash 设置了新的环境变量 ##

  env | wc -l

  例子:设置一个环境变量

  语法如下:

  代码如下:

  env var=value /path/to/command arg1 arg2 ...

  ## 或 ##

  var=value /path/to/command arg1 arg2 ...

  例如设置http_proxy:

  代码如下:

  env http_proxy="http://USER:PASSWORD@server1.cyberciti.biz:3128/" /usr/local/bin/wget www.cyberciti.biz

(0)

相关推荐

  • Linux系统中把文件拷贝到U盘的方法

    Linux下把所有的都当成文件处理,如果在linux系统下需要拷贝文件,哪么你需要先把U盘挂载到系统中的某一个位置,然后再使用cp命令完成拷贝. 方法如下: 把U盘插入Linux电脑,确保U盘指示灯是 ...

  • Linux系统中fstab文件丢失的恢复方法

    /etc/fstab配置文件决定了Linux系统在启动后如何加载各分区,若分区无法挂载,系统也将无法成功启动,启动时将会出现如下错误信息 /etc/fstab文件丢失的解决办法 1. 使用进入急救模式 ...

  • Linux系统中的文件类型及文件扩展名详解

    Linux文件类型和Linux文件的文件名所代表的意义是两个不同的概念。我们通过一般应用程序而创建的比如file.txt、file.tar.gz ,这些文件虽然要用不同的程序来打开,但放在Linux文 ...

  • 虚拟机中linux系统中的文件如何创建和移动

    对于新手来说,经常会碰到如何移动linux系统中的文件夹之类的问题,这些命令都很简单,关键在于熟能生巧,接下来让我们一起学习一下如何在装有linux的虚拟机中进行文件夹的移动. 操作方法 01 第一步 ...

  • Linux系统中在虚拟机上搭建DB2 pureScale的方法

    在Linux操作系统中,可在虚拟机上搭建DB2 pureScale,那么搭建的步骤是怎么样的呢?DB2 pureScale又有什么用呢?下面随小编一起来了解下Linux系统如何在虚拟机上部署DB2 p ...

  • Linux系统中查找文件的方法

    -name 必须用到的选项。表明要求系统按照文件名查找. 一般格式:find /(dirname) -name filename 具体文件名查找法: 如果知道了某个文件的文件名,而不知道这个文件放到哪 ...

  • 详解Linux系统中的文件权限设置

    你要明白的第一件事是文件权限可以用来干什么.当你设置一个分组的权限时发生了什么?让我们将其展开来说,这个概念就真的简单多了.那到底什么是权限?什么是分组呢?你可以设置的3种权限:1.读 — 允许该分组 ...

  • 在Linux系统下移除文件内的隐私数据的方法和具体步骤

    典型的数据文件通常关联着“元数据”,其包含这个文件的描述信息,表现为一系列属性-值的集合。元数据一般包括创建者名称、生成文件的工具、文件创建/修改时期、创建位置和编辑历史等等。几种流行的元数据标准有 ...

  • 在Linux系统中查看进程及杀死僵尸进程的方法

    ps 命令 ps 命令就是最根本相应情况下也是相当强大地进程查看命令.运用该命令可以确定有哪些进程正在运行和运行地状态. 进程 是否结束.进程有没有僵死.哪些进程占用了过多地资源等等.总之大部分信息均 ...

  • 在Linux系统中加密文件的方法

    在Linux系统中加密文件的方法