一、文件查找工具 locate,find

locate:

      根据此前updatedb命令生成的数据库来完成文件查找

      查找速度快,

      非实时查找,模糊查找,

locate  FILENAME

     -b  查找文件名中包含目标字符的文件(不包含目录)


find:通过遍历指定的目标目录,实时查找符合指定属性的文件:

       精确匹配,速度略慢

find [OPTINS] [查找路径] [查找条件] [处理动作]

      查找路径:默认为当前路径

      查找条件:默认为指定路径下的所有文件

      处理动作:默认为打印至屏幕

       查找条件:

               -name "文件名"  支持文件名通配*,?,[],[^]

               -iname "文件名"   文件名不区分大小写

               -regex "PATTERN"  以PATTERN匹配整个文件路径字符串,而不仅仅是文件名

               -user   USERNAME   根据文件属主查找

               -group  USERNAME   根据文件属组查找

               -uid     UID   根据指定UID查找

               -gid     GID   根据指定GID查找

               -nouser  查找没有属主的文件

               -nogroup 查找没有属组的文件

               -type TYPE 根据文件类型查找

                      f   普通文件 

                      d   目录文件

                      l   符号链接文件

                b 块设备文件,c 字符设备文件  p 命令名管道文件  s  套接字文件

               -size  [+|-]#UNIT    常用单位K,M,G

                           #UNIT    #-1 < x <= #   例:2k表示:1.01k到2k

                           -#UNIT   x <= #-1       例:-2k表示:小于等于1k

                           +#UNIT   x > #              +2k       大于2K不包括2K

   根据时间戳来查找:        

               以天为单位:

                     -atime [+|-]#       #:    #=< x < #+1   大于3天但不到4天

                                        -#:       x < #     小于3天

                                        +#:    x >= #+1     大于等于4天

                     -mtime,-ctime

               以分钟为单位:

                     -amin[+|-]#

                     -mmin,-cmin

                根据权限查找:

                     -perm [+|-]MODE

                        MODE:与MODE精确匹配

                        /MODE或+MODE:任何一类用户只要能包含对其指定的任何一位权限即可   例:+555  表示只要目录文件只要属主或数组或任何人中只要有W或X就匹配

                       -MODE:每一类用户的权限都包含对其指定的所以权限

                               -222:   666权限的文件符合   664不符合

  组合查找条件:

         与:-a         查找条件1 -a 查找条件2 -a ....

         或 -o

         非 -not或-! find /tmp -not -user root -ls

        find /tmp -nouser -o -user xj -ls

        find /tmp \( -nouser -o -user xj \) -ls


处理动作:

     -print:默认动作,打印至屏幕

     -ls:显示找到的文件的详细属性

     -delete:删除查找到的文件

     -fls /FILENAME:查找到的文件的详细路径信息保存至指定文件中

     -exec COMMAND {} \;    #不会提示确定,直接操作

     -ok  COMMAND {} \;    #会提示确定,直接操作

         注意:find命令会一次性找到所有符合条件的文件,并一同传递给后面的命令,但有些命令不能接受过长的参数,解决办法:find |xargs COMMAND

  找到文件后把文件名改成之前文件后加上.notroot?


利用i节点删除乱码文件

find ./ -inum 12345 -exec rm {} -rf \;

1
2
3
4
5
6
[xiejun@localhost ~]$  find  /tmp  ! -user root - ls
1308240    0 -rw-rw-r--   1 xiejun   xiejun          0 Aug 24 14:21  /tmp/1test
[xiejun@localhost ~]$  find  /tmp  ! -user root - exec  mv  {} {}.notroot \;
[xiejun@localhost ~]$  find  /tmp  ! -user root - ls
1308240    0 -rw-rw-r--   1 xiejun   xiejun          0 Aug 24 14:21  /tmp/1test .notroot
[xiejun@localhost ~]$