CentOS下如何搜寻档案或目录命令centos查找目录命令




CentOS下如何搜寻档案或目录命令centos查找目录命令

2022-07-20 21:03:57 网络知识 官方管理员

搜寻档案目录

档案的搜寻可就厉害了!因为我们常常需要知道那个档案放在哪里,所以来谈一谈怎么搜寻吧!在Linux底下也有相当优异的

搜寻系统呦!通常find不很常用的!因为速度慢之外,也很操硬盘!通常我们都是先使用whereis或者是locate来检查,如果

真的找不到了,才以find来搜寻呦!为什么呢?因为whereis与locate是利用数据库来搜寻数据,所以相当的快速,而且并没

有实际的搜寻硬盘,比较省时间啦!

which查看可执行档案的位置

whereis查看档案的位置

locate配合数据库查看档案位置

find实际搜寻硬盘去查询文件名称

•which

语法:

[root@test/root]#which[文件名称]

参数说明:

范例:

[root@test/root]#whichpasswd

/usr/bin/passwd

说明:which的基本功能是『藉由PATH这个环境变量的内容,去该路径内寻找可执行文件』,所以基本的功能在于『寻找

执行档』啰!

•whereis

语法:

[root@test/root]#whereis[-bmsu][目录名称]

参数说明:

-b:只找binary的档案

-m:只找在说明文件manual路径下的档案

-s:只找source来源档案

-u:没有说明档的档案!

范例:

[root@test/root]#whereispasswd

passwd:/usr/bin/passwd/etc/passwd/usr/share/man/man1/passwd.1.bz2

将passwd相关字眼的档案或目录都列出来!

[root@test/root]#whereis-bpasswd

passwd:/usr/bin/passwd/etc/passwd

仅列出binary档案!

[root@test/root]#whereis-mpasswd

passwd:/usr/share/man/man1/passwd.1.bz2

仅搜寻manpage所在的目录!

说明:

如果使用find太麻烦,而且时间花用的很大!(因为如果你的硬盘比较老旧的话,嘿嘿!有的等的!)这个时候

whereis就相当的好用了!另外,whereis可以加入参数来找寻相关的资料,例如如果你是要找可执行档(binary)

那么加上-b就可以啦!例如上面的范例针对passwd这支程序来说明!如果不加任何参数的话,那么就将所有的数

据列出来啰!那么whereis到底是使用什么咚咚呢?为何搜寻的速度会比find快这么多?!其实那也没有什么!这是

因为Linux系统会将系统内的所有档案都记录在一个数据库档案里面,而当使用whereis或者是底下要说的locate时,

都会以此数据库档案的内容为准,因此,有的时后你还会发现使用这两个执行档时,会找到已经被杀掉的档案!这就

是因为他是一个『数据库』档案呀!另外,基本上Linux每天会针对Linux主机进行updatedb(就是那一个数据库

档案啰!)的动作,你可以在/etc/cron.weekly/slocate.cron这个档案找到相关的机制呦!当然,也可以直接使用

/usr/bin/updatedb来更新数据库档案呢!

•locate

语法:

[root@test/root]#locate[目录名称]

参数说明:

范例:

[root@test/root]#locateroot

一大堆跟root有关字眼的档案都出来了@_@

[root@test/root]#updatedb<==立刻更新数据库

说明:

locate的使用方式就更简单了!直接键入你要找的档名即可!但是,这个东西还是有使用上的限制呦!为什么呢?您

会发现使用locate来寻找数据的时候特别的快,这是因为locate寻找的数据是由『已建立的数据库/var/lib/slocate』

里面的数据所搜寻到的,所以不用直接在去硬盘当中存取数据,呵呵!当然是很快速啰!那么有什么限制呢?就是因

为他是经由数据库来搜寻的,而数据库的建立预设是在每个礼拜执行一次,所以当您新建立起来的档案,却还在数

据库更新之前搜寻该档案,那么locate会告诉您『找不到!』呵呵!因为必须要更新数据库呀!

那么我到底要建立哪些数据库呢?是否全部都要建立?似乎不需要,这个时候,你可以自己选择需要建立档案数据库

的目录呢!在/etc/updatedb.conf这个内即可设定了!

[root@testroot]#more/etc/updatedb.conf

##Linux-Mandrakeconfiguration.

#由何处开始查询数据,当然是由根目录啦!所以填入/即可

FROM="/"

#哪些目录不想要建立档案搜寻数据,呵呵!就是那些不要的数据嘛!

#忘记的话,记得回上一章去看看内容,就知道为何如此设定了!

PRUNEPATHS="/proc,/tmp,/var/tmp,/usr/tmp,/net,/afs,/mnt"

#安全等级

#0代表关闭安全检验,速度上面较快速,但较不安全;

#1启动安全简易,这是系统的默认值;SECURITY="1"

#查询的时候是否要由屏幕输出?当然不要,否则多麻烦?

VERBOSE="NO"

#数据库所在处!这是默认值,不要随意移动,否则会找不到!

DATABASE="/var/lib/slocate/slocate.db"

#哪些档案系统我们也不搜寻建立?就是光盘啦、非Linux的档案格式啦,

#我们都不要进行搜寻信息的建立啦!

PRUNEFS="nfs,smbfs,ncpfs,proc,devpts,supermount,vfat,iso9660,udf,usbdevfs,devfs"

•find

语法:

[root@test/root]#find[路径][参数]

参数说明:

1.时间:

-atimen:在n*24小时内被access即存取过的档案列出来!

-ctimen:在n*24小时内被changed即改变、新增的档案或目录印出

-mtimen:在n*24小时内被modified即修改过的档案印出

-newerfile:比file还要新的档案就列出来!

2.使用名称:

-gidn:寻找群组ID为n的档案

-groupname:寻找群组名称为name的档案

-uidn:寻找拥有者ID为n的档案

-username:寻找使用者名称为name的档案

-namefile:寻找档名为file的文件名称(可以使用万用字符)

-typetype:寻找档案属性为type的档案,type包含了b,c,d,p,l,s,

这些与前一章的属性相同!例如l为Link而d为路径之意!

范例:

[root@test/root]#find/-nametesting<==寻找档名为testing

[root@test/root]#find/-name'test*'<==寻找档名包含test的!

[root@test/root]#find.-ctime1<==寻找目前目录下一天内新增的目录或档案

[root@test/root]#find/home/test-newer.bashrc<==寻找/home/test目录下比.bashrc还要新的档案

[root@test/root]#find/home-usertest<==寻找/home底下拥有者为test的档案

[root@test/root]#find/dev-typeb<==寻找/dev这个目录下,档案属性为b的档案

说明:

如果你要寻找一个档案的话,那么使用find会是一个不错的主意!他可以根据不同的参数来给予档案的搜寻功能!

例如你要寻找一个档名为httpd.conf的档案,你知道他应该是在/etc底下,那么就可以使用『find/etc-name

httpd.conf』噜!那如果你记得有一个档案档名包含了httpd,但是不知道全名怎办?!呵呵,就用万用字符*吧,

如上以:『find/etc-name'*httpd*'』就可将档名含有httpd的档案都列出来啰!不过,由于find在寻找数据的时

后相当的耗硬盘!所以没事情不要使用find啦!有更棒的指令可以取代呦!那就是whereis与locate啰!!


发表评论:

最近发表
网站分类
标签列表