Linux基础之文件查找find、locate

(一)使用locate命令

  • 查询系统上预建的文件索引数据库

/var/lib/mlocate/mlocate.d

  • 依赖于事先构建 的索引
  • 索引的构建是在系统较为空闲时自动进行( 周期性 任务),管理员手动更新数据库(updatedb)
  • 索引构建过程需要遍历整个根文件系统,极消耗资源
  • 工作特点:
  • 查找速度快
  • 模糊查找
  • 非实时查找
  • 搜索的是文件的全路径,不仅仅是文件名
  • 可能只搜索用户具备读取和执行权限的目录

locate

locate KEYWORD
-i 不区分大小写的搜索
-n N 只列举前N 个匹配项目
locate conf
#搜索名称或路径中带有“conf ”的文件
locate -r ‘\.conf$’
#使用Regex 来搜索以“.conf

(二)find命令

  • 定义:
  • 实时查找工具,通过遍历指定路径完成文件查找
  • 工作特点:
  • 查找速度略慢
  • 精确查找
  • 实时查找
  • 可能只搜索用户具备读取和执行权限的目录

find [OPTION]... [ 查找路径] [查找条件] [ 处理动作]
查找路径:指定具体目标路径;默认为当前目录
查找条件:指定的查找标准,可以文件名、大小、类型、权限等标准进行;默认为找出指定路径下的所有文件
处理动作:对符合条件的文件做操作,默认输出至屏幕

  • 搜索层级

-maxdepth level 最大搜索目录深度, 指定目录为第1级
-mindepth level 最小目录深度

  • 根据文件名和inode 查找:
  • name " 文件名称" :支持使用glob *, ?, [], [^]
  • iname " 文件名称":不区分字母大小写
  • inum n 按inode 号查找
  • samefile name 相同inode号的文件
  • links n 链接数为n 的文件
  • regex "PATTERN" :以PATTERN匹配整个文件路径字符串,而不仅仅是文件名称
  • 根据属主、属组查找:
  • -user USERNAME:查找属主为指定用户(UID) 的文件
  • -group GRPNAME:查找属组为指定组(GID) 的文件
  • -uid UserID:查找属主为指定的UID 号的文件
  • -gid GroupID:查找属组为指定的GID 号的文件
  • -nouser :查找没有属主的文件
  • -nogroup :查找没有属组的文件
  • 根据文件类型查找
    根据文件类型查找:
  • -type TYPE:
  • f: 普通文件
  • d: 目录文件
  • l: 符号链接文件
  • s :套接字文件
  • b: 块设备文件
  • c: 字符设备文件
  • p: 管道文件

上述的条件可以组合起来进行组合查找,但是中间要加上组合条件的KEYWORD

  • 组合条件:
  • 与:-a
  • 或:-o
  • 非:-not, !
  • 德·摩根定律:

(非 A) 或 (非 B) = 非(A 且 B)
(非 A) 且 (非 B) = 非(A 或 B)
示例:
!A -a !B = !(A -o B)
!A -o !B = !(A -a B)
对以上的了解的只是这里做个简单的例子

找出/tmp目录下,属主不是root,且文件名 不以f 开头的文件
find /tmp ( -not -user root -a -not -name 'f' ) -ls
find /tmp -not ( -user root -o -name 'f
' ) –ls
示例:查找/etc/下,除/etc/sane.d目录的其它所有.conf后缀的文件
find /etc -path ‘/etc/sane.d’ -a -prune-o -name “.conf”
find /etc (–path ‘/etc/sane.d’ –o –path ’/etc/fonts’ )-a prune –o name “
.conf”
查找条件可以是其他的:

  • 根据文件大小来查找:

  • -size [+|-]#UNIT

  • 常用单位:k, M, G ,c(byte) )

  • UNIT: (#-1, #]

  • 如:6k 表示(5k,6k]

  • -#UNIT :[0,#-1]

  • 如:-6k 表示[0,5k]

  • +#UNIT :(#, ∞ )

  • 如:+6k 表示(6k ,∞ )

  • 根据时间戳:

  • 以“天”为单位;

  • -atime [+|-]#,

  • : [#,#+1)

  • +#: [#+1, ∞ ]

  • -#: [0,#)

  • -mtime

  • -ctime

  • 以“分钟”为单位:

  • -amin

  • -mmin

  • -cmin

  • 根据权限查找:

  • -perm [/|-]MODE

  • MODE : 精确权限匹配

  • /MODE :任何一类(u,g,o) 对象的权限中只要能一位匹配

  • 即 可,或关系,+从centos7 开始淘汰

  • -MODE :每一类对象都必须同时拥有指定权限,与关系

  • 0 表示不关注

  • find -perm 755会匹配权限模式恰好是755 的文件

  • 只要当任意人有写权限时,find -perm +222 就会匹配

  • 只有当每个人都有写权限时,find -perm -222 才会匹配

  • 只有当其它人(other)有写权限时,find -perm -002才会匹配

  • 处理动作
    -print:默认的处理动作,显示至屏幕

  • -ls:类似于对查找到的文件执行“ls -l” 命令

  • -delete :删除查找到的文件

  • -fls file:查找到的所有文件的长格式信息保存至指定文件中

  • -ok COMMAND{};对查找到的每个文件执行由 COMMAND指定的命令,对于每个文件执行命令之前,都会交互式求用户确认

  • -exec COMMAND {};对查找到的每个文件执行由COMMAND 指定的命令

  • {}:用于引用查找到的文件名称自身

  • find:传递查找到的文件至后面指定的命令时,查找到所有符合条件的文件一次性传递给后面的命令

find示例:

find -name “*.conf” -exec cp {} {}.orig \;
# 备份配置文件,添加.orig这个扩展名
find /tmp -ctime +3 -user joe -ok rm {} \;
# 提示删除存在时间超过3天以上的joe 的临时文件
find ~ -perm -002 -exec chmod o-w {} \;
# 在你的主目录中寻找可被其它用户写入的文件
find /data –type f -perm 644 -name “*.sh” –exec chmod 755{}\;
find /home –type d -ls
# 需要找/data文件内权限为644的以“.sh”结尾的普通文件然后修改权限为755

参数替换xargs

- xargs用于产生某个命令的参数,xargs入可以读入stdin的数据,并且以空格符或回车符将将stdin的数据分隔成为arguments
- 注意:文件名或者是其他意义的名词内含有空格符的情况
- 有些命令不能接受过多参数,命令执行可能会失败,xargs可以解决

find 和xargs 格式:find | xargs COMMAND

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,175评论 5 466
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,674评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,151评论 0 328
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,597评论 1 269
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,505评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 47,969评论 1 275
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,455评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,118评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,227评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,213评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,214评论 1 328
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,928评论 3 316
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,512评论 3 302
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,616评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,848评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,228评论 2 344
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,772评论 2 339

推荐阅读更多精彩内容