文件查找命令

  • 图片1
  • 文件查找
    • locate:非实时(并不能反应当前硬盘上是否有该文件,只是从数据库中提取信息)模糊查找,查找是根据全系统文件数据库进行的  –用的不多
      • # updatedb  手动生成文件数据库
      • 格式:locate KEYWORD
        • -i 不区分大小写的搜索
        • -n #只列举前#个匹配项目
      • locate conf:搜索名称或路径中包含“conf”的文件
      • locate -r ‘\.conf$’: 使用正则表达式来搜索以“.conf”结尾的文件,因为.在正则中有特有的含义所以需要转义
    • find:实时精确查找(直接在硬盘上找),只搜索用户具备读取和执行权限的目录
      • 格式:find  查找路径  查找标准  查找到以后的处理动作
        • 查找路径:默认为当前目录
        • 查找标准:默认为指定路径下的所有文件
        • 处理动作:默认为输出到标准输出
      • 根据文件名和inode查找
        • -name:文件名区分大小写,支持使用通配符,*, ?, [], [^]
        • -inum #:按inode号查找
        • -iname:文件名匹配时不区分大小写(支持glob风格的通配符*,?,[],[^])
        • -links# :链接数为#的文件
        • -regex PATTERN:基于正则表达式进行文件名匹配(用的不多)
          • find /etc -name init
      • 根据文件从属关系查找
        • -user:查找属于该用户的文件
          • # find /home -user shenchao
        • -nouser:查找没有属主的文件
        • -group 根据组来查找
        • -nogroup:查找没有属组的文件
        • -uid UID:根据UID查找
        • -gid GID:根据GID查找
      • -type根据文件类型查找 :f文件 d目录 l软连接文件
        • # find /tmp -type f
      • -size:根据文件大小查找,在根目录下查找大于100MB的文件:
        • find / -size +204800(204800表示多少个数据块,在linux里一个数据块=512字节=0.5K,100MB=102400K=204800个数据块)
        • 也可以指定单位:find / -size +100M
          • +n 大于(#,oo)-n小于[0,#-1] n等于(#-1,#]
      • 根据时间戳查找:
        • 天数:
          • -atime[+|-]#:访问时间,查找过去三天访问过的文件:大于等于3小于4天
            • 图片1
          • -ctime:修改时间(文件属性)
          • -mtime:改变时间(文件内容)
        • 分钟:-amin , -mmin , -cmin
          • 在/etc下查找5分钟内被修改过属性的文件和目录(-5负号表示5分钟之内):# find /etc -cmin -5
      • -perm :根据权限来查找,1=x  2=w  3=wx  4=r  5=rx  6=rw  7=rwx
        • MODE:精确匹配每一位都必须相等
        • /MODE:至少有一类用户匹配上MODE权限即满足条件,0表示该位置权限不关心,即0位置上的那个用户拥有任意权限都可以
          • find ./ -perm /333 -ls  :表示查找或u或g或o,他们至少有一个拥有w或者x权限
        • -MODE:每一类用户都必须拥有指定的MODE权限才符合条件,0表示该位置权限不关心
          • find ./ -perm -333 -ls  :表示查找u且g且o,都同时拥有wx权限的文件
          • 其他人需要有w权限x权限,其他人需要有w权限x权限:
            • 图片1
      • 条件组合:-a与(默认组合逻辑),-o或,-not,!非,
        •  在etc下查找大于80mb小于100mb的文件
          • find /etc -size +163840 -a -size -204800
        •  注意区分以下情况:
          • 第一组:
            • find ./ -not -user user1 -a -not -user user2
            • find ./-not \( -user user1 -o -user user2 \)
          • 第二组:
            • find ./ -not -user user1 -o -not -type d
            • find ./ -not \( -user user1 -a -type d \)
      • find的动作
        • -print:显示(默认的动作)
        • -ls:类似ls -l的形式显示每一个文件的属性
          • find /etc -name *.conf -o -type f -ls  注意:这个会将-name *.conf和-type f -ls取或,而不是-name *.conf和-type f
        • -delete:删除查找到的文件
        • -ok COMMAND {} \; 对查找到的每个文件执行由COMMAND表示的命令,{}表示引用找到的每一个文件的文件名
        • -exec COMMAND {} \; 同上,每一个操作都不需要确认,{} \;为固定格式
          • find ./ -perm -007 -exec chmod o-w {} \;
          • find ./ -perm -020 -exec mv {} {}.new \;
          • find /etc -size +1M -exec echo {} >> /tmp/etc.largefiles \;
          • find /etc -size +1M | xargsecho {} >> /tmp/etc.largefiles
      • 注意:find传递查找到的文件路径到后面的命令时,是先查找出所有符合条件的文件路径,并一次性传递给后面的命令,但是有些命令不能接收过长的参数,此时命令执行会失败,这种方式可以规避:find | xargs COMMAND,xargs传参数的时候是一个个的传给COMMAND处理,所以避免了参数过长导致的错误。xargs可以读入stdin的数据并以空格符或回车符将stdin的数据分隔成为arguments,由于有些命令不支持标准输入,如rm,ls,所以ls | rm 不会将参数传递给rm,需要 ls | xargs rm,find /etc -size +1M | xargs ls -l

本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/102485

(0)
上一篇 2018-07-08 23:24
下一篇 2018-07-09 11:12

相关推荐

  • 浅谈linux系统中mv、cp、rm这三种命令的工作原理

    浅谈mv、cp、rm这三种命令的工作原理

    2018-07-29
  • 第二周总结

    反向单引号 ` `:执行能力强,可以执行命令 [等价于$()]单引号 ‘ ’:只显示字符双引号 “ ”:识别变量,不识别命令花括号{ }: 里面内容互相组合 打印重复字符串的简化形式echo file{1,3,5} 结果为:file1 file3 file5rm -f file{1,3,5} 删除file1 file3 file5echo file{1..1…

    Linux笔记 2018-07-29
  • 第七周作业

    1、简述linux操作系统启动流程 inux系统启动流程大致是这样的: BIOS(Boot Sequence) –> MBR(GRUB) –> Kernel(ramdisk) –> rootfs –> /sbin/init(/etc/inittab) BIOS 主板在接通电源后,BIOS…

    2018-06-29
  • linux系统修复报错的方法 .

    如果/etc/fstab文件和boot目录下的文件丢失怎么办
    centos6启动流程

    2018-05-13
  • 第二周总结

    反向单引号 ` `:执行能力强,可以执行命令 [等价于$()]单引号 ‘ ’:只显示字符双引号 “ ”:识别变量,不识别命令花括号{ }: 里面内容互相组合 打印重复字符串的简化形式echo file{1,3,5} 结果为:file1 file3 file5rm -f file{1,3,5} 删除file1 file3 file5echo file{1..1…

    Linux笔记 2018-07-29
  • centOS6.9 防火墙的关闭以及开启

    有的时候,我们需要对系统的防火墙进行操作,今天小编就给大家讲解一下如何开启以及关闭CentOS6.9系统下的防火墙。 输入:cat /etc/issue 查看版本 (一)通过service命令 service命令开启以及关闭防火墙为即时生效,下次重启机器的时候会自动复原。 查看防火墙状态:service iptables status ,记得在CentOS6…

    Linux笔记 2018-04-20