shell-文件查找命令笔记三

文件查找-find命令

  • 格式:find [路径] [选项] [操作]
  • 选项
    • -name 根据文件名查找
    • -iname 根据文件名查找,忽略大小写
    • -perm 根据文件权限查找
      • find /etc -perm 777
    • -prune 该选项可以排除某些查找目录,格式为-path 排除文件 -prune -o -path 文件 -prune -o 其中-o是或的意思
      • find . -path ./etc -prune -o -type f 查找当前目录下文件类型,排除./etc文件 的文件
      • find . -path ./test -prune -o -path ./test_1 -prune -o -type f
    • -user 根据用户属主查找
    • -group 根据用户属组查找
    • -mtime -n | +n 根据文件更改时间查找, -n表示n天内修改的时间 +n表示n天外修改的时间 n表示n天修改的时间
    • -mmin -n | +n -n表示n分钟修改的时间 +n表示n分钟外修改的时间 n表示n分钟修改的时间
    • -nogroup 查找无有效属组的文件
    • -nouser 查找无有效属主的文件
    • -newer file1 查找更改时间比file1新的文件
      • find . -newer test 查找当前路径下,比test文件新的文件
    • -type 按照文件类型
    • -size +n -n 按照文件大小查找,-n大小小于n的文件 +n大小大于n的文件 n大小等于n的文件
      • find /etc -size +1M 查找/etc目录下,文件大于1M的文件
      • find /etc -size -1M 查找/etc目录下,文件小于1M的文件
    • -mindepth n 从n级子目录开始搜索
    • -maxdepth n 最多搜索到n级子目录
  • 操作
    • -print 打印输出
    • -exec 对搜索的文件执行特定的操作,格式为:-exec 'command' {} \;
      • find /etc -type f -name '*.conf' -size +10k -exec rm -f {} \; 搜索etc目录下,以.conf结尾的,且大于10k的文件,然后将其删除
      • find /var/log -name '*.log' -mtime +7 -exec rm -f {} \; 搜索/var/log目录下,以.log结尾的,更改时间在7天外的文件,然后将其删除
      • find /etc/ -size +10k -type f -name '*.conf' -exec cp {} /root/conf \; 搜索/etc目录 以.conf结尾的 大于10k的文件,然后拷贝到/root/conf路径下
    • -ok 和exec操作一样,每次操作都会给用户提示

逻辑运算符

  • -a 逻辑与
  • -o 逻辑或
  • -not 或 ! 逻辑非
    • find . -not -user hfds | find . ! -user hfds 查找当前路径下,属主不是hfds的文件
    • find . -type f -a \{ -user hfds -o -name '*.xml' \} 查找当前目录下 属主为hfds或以.xml结尾的普通文件
    • find . -type f -a -user hfds -a -size +300c 查找当前路径下 属主hfds 大于300字节的普通文件

locate

  • 文件查找命令,所属软件包mlocate
  • 不同于find命令是在整块磁盘中搜索,locate命令在数据库文件中查找
  • find是默认全部匹配的,locate则是默认部分匹配

updatedb命令

  • 用户更新/var/lib/mlocate/mlocate.db
  • 所使用配置文件/etc/updatedb.conf
  • 该命令在后台cron计划任务定期执行

whereis命令

  • -b 只返回二进制文件
  • -m 只返回帮助文件文件
  • -s 只返回源代码文件

which命令

  • 作用:仅查找二进制程序文件
posted @ 2022-11-05 23:11  phper-liunian  阅读(608)  评论(0编辑  收藏  举报