locate命令:非实时查找,数据库查找(速度快)
依赖于事先构建的索引;索引在系统较为空闲时自动构建(周期性任务)
updatedb:构建最新的索引(超级耗资源)
locate 字符串:搜索所有路径中是否有字符串
find命令:文件系统上查找指定符合条件的文件(实时查找慢)
find [选项]... [查找路径] [查找条件] [处理动作]
查找路径:可指定多个路径,默认为当前目录
查找条件:指定以文件名、大小、类型、权限等条件查找,默认为所有文件
处理动作:对符合条件的文件做什么操作,默认输出到屏幕
查找条件:
根据文件名查找
-name "文件名":支持使用通配符
-iname "文件名":忽略大小写,支持使用通配符
-regex "PATTERN":以PATTERN匹配整个文件路径
根据文件属主、属组查找
-user 用户名:查找属主
-group 组名:查找属组
-uid UID:查找指定UID文件
-gid GID:查找指定GID文件
-nouser:查找没有属主的文件
-nogroup:查找没属组的文件
根据文件类型查找
-type f|d|l...:指定文件类型查找
根据文件大小查找
-size [+|-]大小
大小可为:#k,#M,#G
3k:查找大于2k小于等于3k的文件
-3k:查找小于等于2k的文件
+3k:查找大于3k的文件
根据时间戳查找
以天为单位
-atime [+|-]#
3:表示大于等于3天小于4天
+3:大于等于4
-3:小于3天
-mtime [+|-]#:
-ctime [+|-]#:
以分钟为单位
-amin [+|-]#:
-mmit [+|-]#:
-cmin [+|-]#:
根据权限查找
-perm [/|-]777
777:精确权限匹配
/777:属主、属组、其它中任意读、写、执行权限匹配就行
例:/700;属主有读或写或执行权限
-777:查找属主权限为7或属组为7或其它为7
组合条件
-a:与(可忽略)
-o:或(例:find /home -nouser -o -nogroup)
-not|!:非
如果有处理动作,组合后需要加括号,例:find /home \( -nouser -o -nogroup \) -ls
处理动作
-print:默认的处理动作,显示到屏幕
-ls:类似ll命令
-delete:删除查找到的文件
-fls /file:查到到所有文件的长格式信息保存到文件
-ok COMMAND {} \; :对查到的文件由COMMAND执行
每个文件执行之前,都会交互式要求用户确认
-exec COMMAND {} \; :对查找到文件执行COMMAND执行
{}:用于引用查找到的文件
例:find /tmp -cmin -5 -exec mv {} {}.new \;查找tmp下最近5分钟改变过文件并重命名
注意:find查到所有的文件,一次性传递给后面的命令,有些命令接受过多参数,可能会失败可使用
| xargs COMMAND:一个一个文件传递给COMMAND执行
依赖于事先构建的索引;索引在系统较为空闲时自动构建(周期性任务)
updatedb:构建最新的索引(超级耗资源)
locate 字符串:搜索所有路径中是否有字符串
find命令:文件系统上查找指定符合条件的文件(实时查找慢)
find [选项]... [查找路径] [查找条件] [处理动作]
查找路径:可指定多个路径,默认为当前目录
查找条件:指定以文件名、大小、类型、权限等条件查找,默认为所有文件
处理动作:对符合条件的文件做什么操作,默认输出到屏幕
查找条件:
根据文件名查找
-name "文件名":支持使用通配符
-iname "文件名":忽略大小写,支持使用通配符
-regex "PATTERN":以PATTERN匹配整个文件路径
根据文件属主、属组查找
-user 用户名:查找属主
-group 组名:查找属组
-uid UID:查找指定UID文件
-gid GID:查找指定GID文件
-nouser:查找没有属主的文件
-nogroup:查找没属组的文件
根据文件类型查找
-type f|d|l...:指定文件类型查找
根据文件大小查找
-size [+|-]大小
大小可为:#k,#M,#G
3k:查找大于2k小于等于3k的文件
-3k:查找小于等于2k的文件
+3k:查找大于3k的文件
根据时间戳查找
以天为单位
-atime [+|-]#
3:表示大于等于3天小于4天
+3:大于等于4
-3:小于3天
-mtime [+|-]#:
-ctime [+|-]#:
以分钟为单位
-amin [+|-]#:
-mmit [+|-]#:
-cmin [+|-]#:
根据权限查找
-perm [/|-]777
777:精确权限匹配
/777:属主、属组、其它中任意读、写、执行权限匹配就行
例:/700;属主有读或写或执行权限
-777:查找属主权限为7或属组为7或其它为7
组合条件
-a:与(可忽略)
-o:或(例:find /home -nouser -o -nogroup)
-not|!:非
如果有处理动作,组合后需要加括号,例:find /home \( -nouser -o -nogroup \) -ls
处理动作
-print:默认的处理动作,显示到屏幕
-ls:类似ll命令
-delete:删除查找到的文件
-fls /file:查到到所有文件的长格式信息保存到文件
-ok COMMAND {} \; :对查到的文件由COMMAND执行
每个文件执行之前,都会交互式要求用户确认
-exec COMMAND {} \; :对查找到文件执行COMMAND执行
{}:用于引用查找到的文件
例:find /tmp -cmin -5 -exec mv {} {}.new \;查找tmp下最近5分钟改变过文件并重命名
注意:find查到所有的文件,一次性传递给后面的命令,有些命令接受过多参数,可能会失败可使用
| xargs COMMAND:一个一个文件传递给COMMAND执行