文件查找命令的使用小结

文件查找在linux系统运维使用极为广泛。本文从以下几个方面阐述linxu中文件查找的用法

1、查找命令及概述

    在linux中,文件查找使用的命令有locate 和find两个命令。其中locate命令是查找系统的文件数据库。速度快,但是有时候可能不准确,需要和updatedb配合使用。find命令是根据匹配模式逐一查找的。速度慢,但是比较准确。

2、命令使用的格式

    locate FILENAME

    [root@localhost ~]# touch upfile

    [root@localhost ~]# updatedb

    [root@localhost ~]# locate upfile

    /opt/lampp/modules/mod_authz_groupfile.so

    /root/upfile

    # 需要注意的是:locate要和updatedb配合使用

    # locate是查不到在/tmp下的文件的


    find [路径] 标准 处理动作

    路径:可以省略,如果省略,那么查找的当前文件

    标准:可以省略,如果省略,就显示查找路径下的所有文件

    处理动作:默认是显示操作

3、使用方法及示例

    -name:表示根据文件名查找

    

    [root@localhost testdir]# find . -name abc 

    ./abc

    #注意:-name abc 那么是abc的精确匹配。如果需要使用模糊匹配,需要使用正则表达式。.表示当前目录 -iname 表示根文件名查找,并且忽略文件名的大小写


    

    [root@localhost testdir]# find . -name abc\* 

    ./abc123

    ./abc

    # 查找在当前目录下以abc开头的文件


    -type :根据文件类型查找

    

    [root@localhost testdir]# find . -type d 

    .

    ./dir2

    ./02-04

    ./sh

    # d:表示文件夹;l:链接文件;c:字符设备文件;b:块设备文件;p:管道文件;s:套接字文件;-f表示普通文件


    -size [+|-]# :根据文件大小查找。单位是 K M G 

    

    root@hndroot-virtual-machine:~# find /etc -size +1M

    /etc/brltty/zh-tw.ctb

    #注意,+表示大于,-表示小于,没有表示等于


    -user USERNAME 根据用户名查找    

    [root@localhost testdir]# find . -user user1

    ./abc

    #同理,-group GROUPNAME 根据组名查找

    -uid UID 根据UID查找

    -gid GID 根据GID查找

    

    -nouser 表示查找没有属主的文件

    -nogroup 表示查找乜有属组的文件

    

    [root@localhost testdir]# userdel -r user1

    [root@localhost testdir]# find . -nouser

    ./abc

    对没有属主,属组的文件,是危险文件,应该尽快将其属主改为root

    -amin -atime -cmin -ctime

    -amin [+|-]#  表示文件最新被访问+#表示#分之前,-#表示在#分之后

    -atime 类似-amin 不过以天为单位。


    -perm [+|-] mode:根据权限查找文件

    

    [root@localhost testdir]# man find

    [root@localhost testdir]# find . -perm u-x

    ./abc

    [root@localhost testdir]# find . -perm o-x

    ./abc

 

4、find的处理动作

    

    [root@localhost testdir]# find . -nouser -exec chown root  {} \;

    [root@localhost testdir]# ll

    #查找到没有属主的文件,将其属主改为root,要注意写法。 {} 是对查找到的结果的引用

    

    

    [root@localhost testdir]# find -size +1k -a -type f -exec mv {} {}.new \;

    [root@localhost testdir]# ll

    -rw-r--r--. 1 root root 1717 Oct 19 19:57 passwd.new

    # -a 表示条件的与 -o表示条件或,-not 表示条件非。

    # 需要理解find 路径 条件 操作的命令格式。{} 是查找到的结果。上述命令是把查找到的结果文件名后加上.new

   

4、小结

    find命令有很多查询条件,还可以使用正则表达式,也可以进行条件的组合,同时,对查找到的结果还可以用命令进行处理。

你可能感兴趣的:(find,locate,linux文件查找)