一、文件查找工具 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 ~]$ |