您的位置:首页 > 运维架构 > Shell

三.文件查找命令

2015-09-07 14:14 288 查看
1.按路径进行查找命令-------which

      which主要用来查找命令的位置,显示命令的绝对路径

       例: $ which touch

2.按资料苦查找命令----whereis

        whereis既能查询出命令,又能查询出ubuntu资料库里记载的文件

whereis命令选项    说明

-b    只查找二进制文件

-m    只查找说明文件在manual路径下的文件

注:

          -b,-m均是查找文件,且whereis查找效率要高

3.查找数据库超找文件的命令--------updatedb和locate

        locate 命令能够将文件系统中所有与被查询的文件名相同的文件快速查询出来,当然,这与updatedb命令创建的文件系统数据库密切相关,所以是先有文件系统数据库然后查询。

  Updatedb 命令的执行方式为:    $ sudo updatedb

 locate 命令的执行方式为:    $ locate keyword

注:

         当文件系统发生改变时,需要重新运行updatedb

4.功能强大的查找命令-------find

  find 可以按时间、用户、权限、大小、名字、类型进行查找,并可以对记过进行处理    

格式:  $ find 查询的路径 [选项] [对查询到的结果执行的命令]

   A、按时间状态查询:

       

find选项    说明

-atime(+|-) n    此选项代表查找出n天以前被读取过的文件

-mtime(+|-) n    此选项代表查找出n天以前文件内容发生过改变的文件

-ctime(+|-) n    此选项代表查找出n天以前的文件的属性发生改变的文件

-newer  file    此选项代表查找出所有比file文件新的文件

-newer file1 ! -newer file2    此选项代表查找比file1新,但比没有file2新的文件

注:

         a、n位数字,若其前面没有+也没有-,代表的是查找出n天以前的,但只是这一天之内发生改变的文件

         b、如果n前面有+号,代表查找出n天之前的发生改变的文件。

         c、如果是-号,则代表查找距离n天之内的所有发生改变的文件

例:

   $ sudo find / -mtime -3 ………查找三天之内内容发生改变的文件

   $ sudo find /home -newer file1 ! -newer file2

    …………………在/home目录下查找比file1新但没有file2新的文件

B、根据用户或者组进行查找

选项    说明

-user 用户名    根据属主名查找文件

-group 组名    根据属组组名查找文件

-uid n    根据文件属主的UID进行查找文件

-gid n    根据文件属组的GID进行查找文件

-nouser    查询文件属主在/etc/passwd文件中不存在的文件

-nogroup    查询文件属组在/etc/group文件中不存在的文件

例: $ sudo find /home -user ubuntu…………………………………………………

………………  查找在/home目录下的属主是ubuntu的文件

        $ sudo find /etc -nouser ………………………………………………………………

………………  查找/etc目录下的没有属主的文件

C、根据文件权限或大小名字类型进行查找

选项    说明

-name 文件名    按文件名进行查找

-type 文件类型    按文件类型进行查找

-size[+|-]n (c|k)    按文件大小进行查找

-perm[+|-] 文件权限    按照文件权限进行查找

注:

        a、文件类型可以通过ls -l进行查询,“-”代表普通文件,“d”代表目录,“b”代表设备文件,“c”代表字符设备文件

        b、按文件大小查询,默认的单位是块,习惯上用字节或Kb,故用“c“表示字节,”k“表示1024字节即1Kb,其前面的”+“代表大于n所指定的大小,”-“表示小于

        c、文件权限,此处权限应该是4位,即加上了特殊权限位的部分,其中”+“表示所查找的文件的权限中有前面权限条件的任意一个即可,

”-“表示所查找的文件权限至少要包含前面权限的所有

例:

   $ find /etc -size +1000000c…………………………………………………………………

………………想找出/etc目录下的所有文件大小超过1MB的文件

  $ sudo find / -perm -4000 ……………………………………………………………………

………………查找系统中所有具有SUID位的文件

D、多个查找选项的应用

    

选项    说明

-o    逻辑或

-a    逻辑与

例:

  $ sudo find /etc -size +2048 -a -size -20480……………………

………………在/etc目录下查找大于1MB小于10MB的文件

  $ sudo find find /etc -name inittab -o -name grub……

………………查找/etc目录下文件名为inittab或者grub的文件

E、对查询结果的处理

  要用到的选项有:-exec ,-ok ,-print

   -exec shell命令  {}  \;

   其中-exec 就是代表要执行shell命令,后面加的是shell命令,再后面的“{}”表示的是要对前面查询到的结果进行查询,最后的“\;”表示命令的结束。

   -ok 与 -exec的唯一区别就是它在执行shell命令的时候会事先进行询问,-print选项是将结果显示在标准输入上

注意:“{}”和“\;”之间有空格

例:

    $ sudo find / -perm -4000 -exec ls -l > /home/hxl {} \;………………查找系统内所有具有SUID位的文件,并将结果保存在/home/hxl文件中(其中“>”是输出重定向)

  $ sudo find /home -name “*.txt” -ok rm {} \;………………

………………查找/home目录下所有以“.txt”结尾的文件(现在好像*不能使用)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  ubuntu shell命令