Chinaunix首页 | 论坛 | 博客
  • 博客访问: 19790
  • 博文数量: 11
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 70
  • 用 户 组: 普通用户
  • 注册时间: 2014-03-13 22:57
文章分类

全部博文(11)

文章存档

2014年(11)

我的朋友

分类: LINUX

2014-04-18 20:40:38

        在linux系统中,我们经常会对文件进行查找,在我们对文件进行查找的过程中,有which、whereis、locate、find这四个命令供我们选择,我们怎么来对这些命令进行选择,下面我们来对这四个命令进行一一分析。
which
    
    which是查找linux命令存放路径的,通过对PATH变量所指定的路径进行查找,查找的文件必须具有可执行的权限。
参数:
     -n<文件名长度>  指定文件名长度,指定的长度必须大于或等于所有文件中最长的文件名。 
     -p<文件名长度>  与-n参数相同,但此处的<文件名长度>包括了文件的路径。 
     -w              指定输出时栏位的宽度。 
     -V              显示版本信息。  
例子:
        [root@localhost ~]# which mkdir
        /bin/mkdir
        [root@localhost ~]# PATH=/root/bin
        [root@localhost ~]# echo $PATH
        /root/bin
        [root@localhost ~]# which mkdir
        /usr/bin/which: no mkdir in (/root/bin)

        [root@localhost ~]# which cd
        /usr/bin/which: no cd in (/usr/local/sbin:/usr/sbin:/sbin:/usr/local/bin:/usr/bin:/bin:/root/bin)
如果which查找不到命令,有2种可能:
       
1.命令确实不存在在PATH变量定义的路径里
       
2.此命令是bash的内部命令
whereis
        过查看PATH变量所指定的路径去
查看该命令所在的路径,同时会显示帮助文件的路径。
参数:
       
-b        查找二进制文件
        -m        查找该命令的帮助文件
        -s        查找源代码文件   
        -u        查找不包含指定类型的文件
例子:
        [root@localhost ~]# whereis mkdir
        mkdir: /bin/mkdir /usr/share/man/man2/mkdir.2.gz /usr/share/man/man1p/mkdir.1p.gz /usr/share/man/man3p/mkdir.3p.gz         /usr/share/man/man1/mkdir.1.gz
locate
       
通过对系统内的数据库进行查找可以快速找出相关的文件,数据库由updatedb程序来更新,刚更名或者新建的文件需要更新数据库才能查找到
参数:
       
-e       将排除在寻找的范围之外。
        
-n       至多显示 n个输出  
       
-o        指定资料库存的名称      

         -d        指定资料库的路径
例子:
        [root@localhost ~]# locate mkdir
        /bin/mkdir
        /usr/bin/gnomevfs-mkdir
        /usr/bin/gvfs-mkdir
        /usr/lib/perl5/auto/POSIX/mkdir.al
        /usr/share/man/man1/mkdir.1.gz
        /usr/share/man/man1p/mkdir.1p.gz
        /usr/share/man/man2/mkdir.2.gz
        /usr/share/man/man2/mkdirat.2.gz
        /usr/share/man/man3p/mkdir.3p.gz
find
     
用于查找文件目录,操作比较复杂,格式:find [查找范围] [查找条件] [动作]
参数:
     
-name:    按文件名称查找
       -size:     按文件大小查找
       -user:     按文件属主查找
       -type:     按文件类型查找
       -perm :    按文件权限查找
     -mtime :   按文件更改(对立面的内容进行修改)时间查找
       -atime:    按文件的访问时间查找
       -ctime:    改变文件的属性(时间、大小、属主、属组等)查找 
例子:
       
使用find命令查找出/root目录下大小大于1M小于4M的文件
       
[root@teacher ~]# find /root -size +1M -a ! -size +4M -exec ls -lh {} \;
       (结果太多,这里就没有放进来了)
介绍了各命令的一些信息,下面我们来对比下各命令的特点,
which查找的文件,需要具有可执行权限,如果没有执行权限,就算在PATH变量的路径下,也查找不到。whereis能显示man手册文件的路径,whereis不需要可执行权限,which和whereis主要是用来查找命令,不能用来查找目录,locate可以用来查找文件和目录,但是需要updatedb命令更新下数据库。当我们用whereis和locate无法查找到我们需要的文件时,可以使用find,但是find是在硬盘上遍历查找,因此非常消耗硬盘的资源,而且效率也非常低





            

 
        



















        



    
阅读(607) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~