查看文件及目录占用容量大小,ncdu的使用更直观一些,至少看起来是这样。但是ncdu命令后面的目标参数,一般不能是文件,下面就简单介绍ncdu的使用。
ncdu
三种输出模式:
-o 文件 将信息输出到这个指定的文件,以代替打开浏览界面。如果文件用-代替,那么将信息输出到标准输出
-f 文件 从-o参数生成的那个文件中导入目录信息,以代替实际指定目录中取得信息。如果文件用-代替,那么将从标准输入读入文件。因为不是读取的实际指定目录信息,所以这个模式中刷新和删除操作都无效
目录 一般常用方式,分析该指定的目录
调用浏览界面时可使用的参数:
-0 除非有重大错误,否则不会有额外信息,调用浏览界面时的默认选项
-1 输出到文件时的默认选项,会有单独一行的反馈出现在标准输出
-2 如果不是输出到文件,可以选择这个选项更好
-q 安静模式,这个模式下,浏览界面默认每秒十次更新数据下降为每两秒一次,以避免占用过多带宽
-r 只读模式,在浏览界面中,禁止删除操作
–si 显示时使用KB,MB等单位代替KiB,MiB等
–confirm-quit 用着退出时,按下q后会出现额外的对话框,再输入y才能退出,防止误操作
再次确认的对话框
只影响从指定目录读入信息时的参数:
这些选项会影响从目录读入的信息,从文件导入目录信息时无效
-x 只计算与被扫描目录位于相同的文件系统上的文件和目录
-exclude PATTERN 排除与PATTERN匹配的文件,默认情况下仍会显示这些文件,但不计入磁盘使用情况统计信息。这个参数可以多次使用,以排除复数中文件
-X 文件 排除与文件中PATTERN匹配的文件,每个PATTERN单独一行
–exclude-caches 排除包含CACHEDIR.TAG的目录,目录仍将显示,但不会显示其内容,并且不计入磁盘使用情况统计信息
进入浏览界面后,使用“shift+?”可以调用帮助窗口,帮助窗口有三个,可以使用左右箭头切换
快捷键 用于浏览界面中快速操作
up,k 用于向上移动光标
down,j 用于向下移动光标
right,enter,l 打开所选目录
left,<,h 退回上一级目录
n 按名称排序(再次按降序排列)
s 按文件大小排序(再次按降序排列)
c 切换子条目计数是否显示
d 删除所选文件或目录
t 切换,排序时目录是否一定在文件前面
g 显示百分比或用“#”字符表示容量大小,或都不显示
a 切换,显示文件自身大小或占用磁盘容量
e 切换,是否显示隐藏文件
i 以一个额外的对话框显示所选条目的更多信息
b 在当前目录重新打开一个shell
r 刷新/重新计算当前目录
q 退出浏览界面
浏览界面的第一列 用于显示文件或目录的状态信息
! 读取该目录错误时出现
. 读取子目录错误时出现
< 此目录或文件被排除统计
> 此目录或文件在另一个文件系统
@ 这既不是一个文件也不是一个目录
H 同样的文件已经被统计过(表明该目录或文件存在或是一个硬链接)
e 此目录是一个空目录
其余信息 包括作者、网址等
一般用法
读取指定目录
切换到该目录,然后输入命令
或者
直接输入命令加目录
浏览界面,红线处是自身总大小和所占磁盘容量总大小
图中从左到右,每一列依次是文件或目录的状态信息,容量大小及单位,所占百分比,文件目录名。
删除文件或目录
移动光标到想要删除的文件或目录,按下d,出现该对话框,从左到右依次是,是,否,不在询问
只查看根目录所挂载的文件系统的内容
我的根目录
-x 参数排除在其它文件系统上的文件和目录
读入一个很大的目录时
我们可以先将信息输出到指定的文件并且压缩
图中,-1参数多用于输出到文件时,-o参数指定输出文件,-字符代表输出到标准输出,|是管道命令,gzip将信息流压缩,>表示输出重定向,目标文件则是export.gz。
等一会儿输出完毕后,再查看输出文件
图中zcat读取压缩文件内容,|管道命令,-f参数表明从文件中读入文件信息,其后的-表明从标准输入中导入
其实,要达成一个目地,并不只有一种办法,我们常常觉得,有些命令太死板了,并不能舒服的完成我们想要的目标。这时候让计算机随着我们的想法自由运行是一件十分畅快的事情,只是这种自由要以学习为前提。
例如,我想要了解 /root 目录下有多少shell
脚本,那么可以这么做
find /root -name "*.sh"|wc -l
它可以统计出.sh
结尾的文件的数目,要是更无聊一点,我们还可以写一个脚本
calculate.sh
#!/bin/bash
CONFIG_FILE=./calculate.cf
total=0
#The follow function need two parameter,one for directory,another for the type of file.
function statistics
{
if [ $# -eq 2 ]
then
if [[ $1 == *$2 ]]
then
total=$[ $total + 1 ]
fi
else
echo "The function need two parameter like : function directory file_type."
fi
}
#The follow function need two parameter,one for destination file,another for type of file.
function type_destin
{
if [ -f $1 ]
then
statistics $1 $2
elif [ -d $1 ]
then
cd $1
local List=$(ls $1|sed "s:^:`pwd`/:")
for dist in $List
do
type_destin $dist $2
done
cd - &>/dev/null
fi
}
DESTINATION=$(head -n 1 $CONFIG_FILE|gawk '/DESTINATION/{print $3}')
FILE_TYPE=$(tail -n 1 $CONFIG_FILE|gawk '/FILE_TYPE/{print $3}')
type_destin $DESTINATION $FILE_TYPE
echo "total=$total"
calculate.cf
DESTINATION = /root
FILE_TYPE = sh
要是有空的话,再回来用c语言实现 😄。