1.find查找概述

为什么要有文件查找,因为很多时候我们可能会忘了某个文件所在的位置,此时就需要通过find来查找。

find命令可以根据不同的条件来进行查找文件,例如:文件名称、文件大小、文件修改时间、属主属组、权限、等等方式。同时find命令是Linux下必须掌握的。

find 命令的基本语法如下

命令 路径 选项 表达式 动作
find [path...] [options] [expression] [action]
查找 地区 妹纸 18-25岁 约?

2.find查找示例

2.1.find名称查找

#1.创建文件
touch /etc/sysconfig/network-scripts/{ifcfg-eth1,IFCFG-ETH1} #2.查找/etc目录下包含ifcfg-eth0名称的文件
[root@xuliangwei ~]# find /etc -name "ifcfg-eth1" #3.-i 忽略大小写
[root@xuliangwei ~]# find /etc -iname "ifcfg-eth1" #查找/etc目录下包含ifcfg-eth名称所有文件
[root@xuliangwei ~]# find /etc/ -name "ifcfg-eth*"
[root@xuliangwei ~]# find /etc -iname "ifcfg-eth*"

2.2.find大小查找

#1.查找大于5M的文件
[root@xuliangwei ~]# find /etc -size +5M #2.查找等于5M的文件
[root@xuliangwei ~]# find /etc -size 5M #3.查找小于5M的文件
[root@xuliangwei ~]# find /etc -size -5M

2.3.find类型查找

# f 文件
[root@xuliangwei ~]# find /dev -type f # d 目录
[root@xuliangwei ~]# find /dev -type d # l 链接
[root@xuliangwei ~]# find /dev -type l # b 块设备
[root@xuliangwei ~]# find /dev -type b # c 字符设备
[root@xuliangwei ~]# find /dev -type c # s 套接字
[root@xuliangwei ~]# find /dev -type s # p 管道文件
[root@xuliangwei ~]# find /dev -type p

2.4.find时间查找

#1.创建测试文件(后期shell会讲)
[root@xuliangwei ~]# for i in {01..28};do date -s 201904$i && touch file-$i;done #2.查找7天以前的文件(不会打印当天的文件)
[root@xuliangwei ~]# find ./ -iname "file-*" -mtime +7 #3.查找最近7天的文件,不建议使用(会打印当天的文件)
[root@xuliangwei ~]# find ./ -iname "file-*" -mtime -7 #4.查找第7天文件(不会打印当天的文件)
[root@xuliangwei ~]# find ./ -iname "file-*" -mtime 7 #5.本地文件保留最近7天的备份文件, 备份服务器保留3个月的备份文件(实际使用方案)
find /backup/ -iname "*.bak" -mtime +7 -delete
find /backup/ -iname "*.bak" -mtime +90 -delete

2.5.find用户查找

#查找属主是jack
[root@xuliangwei ~]# find /home -user jack #查找属组是admin
[root@xuliangwei ~]# find /home -group admin #查找属主是jack, 属组是admin
[root@xuliangwei ~]# find /home -user jack -group admin #查找属主是jack, 并且属组是admin
[root@xuliangwei ~]# find /home -user jack -a -group admin #查找属主是jack, 或者属组是admin
[root@xuliangwei ~]# find /home -user jack -o -group admin #查找没有属主
[root@xuliangwei ~]# find /home -nouser #查找没有属组
[root@xuliangwei ~]# find /home -nogroup #查找没有属主或属组
[root@xuliangwei ~]# find /home -nouser -o -nogroup

2.6.find权限查找

#精切匹配644权限
[root@xuliangwei ~]# find . -perm 644 -ls #包含444权限即可
[root@xuliangwei ~]# find . -perm -444 -ls #查找全局可写(每位权限必须包含w)
[root@xuliangwei ~]# find . -perm -222 -ls #包含set uid
[root@xuliangwei ~]# find /usr/sbin -perm -4000 -ls #包含set gid
[root@xuliangwei ~]# find /usr/sbin -perm -2000 -ls #包含sticky
[root@xuliangwei ~]# find /usr/sbin -perm -1000 -ls

3.find动作处理

当查找到一个文件后, 需要对文件进行如何处理, 默认动作 -print

动作 含义
-print 打印查找到的内容(默认)
-ls 以长格式显示的方式打印查找到的内容
-delete 删除查找到的文件(仅能删除空目录)
-ok 后面跟自定义 shell 命令(会提示是否操作)
-exec 后面跟自定义 shell 命令(标准写法 -exec \;)

3.1.示例

#1.使用-print打印查找到的文件
[root@xuliangwei ~]# find /etc -name "ifcfg*"
[root@xuliangwei ~]# find /etc -name "ifcfg*" -print #2.使用-ls打印查找到的文件,以长格式显示
[root@xuliangwei ~]# find /etc -name "ifcfg*" -ls #3.使用-delete删除文件,但仅能删除空目录
[root@xuliangwei ~]# find /etc -name "ifcfg*" -delete #4.使用-ok实现文件拷贝,但会提示是否拷贝
[root@xuliangwei ~]# find /etc -name "ifcfg*" -ok cp -rvf {} /tmp \; #5.使用-exec实现文件拷贝和文件删除。
[root@xuliangwei ~]# find /etc -name "ifcfg*" -exec cp -rvf {} /tmp \;
[root@xuliangwei ~]# find /etc -name "ifcfg*" -exec rm -f {} \;

3.2.使用find命令结合xargs

#xargs将前者命令查找到的文件作为一个整体传递后者命令的输入
[root@xuliangwei ~]# touch file.txt
[root@xuliangwei ~]# find . -name "file.txt" |xargs rm -f
[root@xuliangwei ~]# find . -name "file.txt" |xargs -I {} cp -rvf {} /var/tmp

3.3.find相关练习题

1.查找/tmp目录下,属主不是root,且文件名不以f开头的文件
2.查找/var目录下属主为root,且属组为mail的所有文件
3.查找/var目录下不属于root、lp、gdm的所有文件
4.查找/var目录下最近一周内其内容修改过,同时属主不为root,也不是postfix的文件
5.查找/etc目录下大于1M且类型为普通文件的所有文件
6.将/etc/中的所有目录(仅目录)复制到/tmp下,目录结构不变
7.将/etc目录复制到/var/tmp/,/var/tmp/etc的所有目录权限777/var/tmp/etc目录中所有文件权限666
8.保留/var/log/下最近7天的日志文件,其他全部删除
9.创建touch file{1..10}10个文件, 保留file9,其他一次全部删除
10.解释如下每条命令含义
mkdir /root/dir1
touch /root/dir1/file{1..10}
find /root/dir1 -type f -name "file5"
find /root/dir1 ! -name "file5"
find /root/dir1 -name "file5" -o -name "file9"
find /root/dir1 -name "file5" -o -name "file9" -ls
find /root/dir1 \( -name "file5" -o -name "file9" \) -ls
find /root/dir1 \( -name "file5" -o -name "file9" \) -exec rm -rvf {} \;
find /root/dir1 ! \( -name "file4" -o -name "file8" \) -exec rm -vf {} \;

11、find查找的更多相关文章

  1. 11.find 查找并复制文件

    请把系统上拥有者为ira用户的所有文件,并将其拷贝到/root/findfiles目录中 find /home/ira/ -user ira -exec cp -a {} /root/findfile ...

  2. 基于jQuery查找dom的多种方式性能问题

    这个问题的产生由于我们前端组每个人的编码习惯的差异,最主要的还是因为代码的维护性问题.在此基础上,我对jQuery源码(1.11.3)查找dom节点相关的内容进行了仔细的查阅,虽然并不能理解的很深入 ...

  3. 剑指offfer:二维数组中的查找

    题目:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成这样一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数. 例如: 1    2  ...

  4. 13.Django1.11.6文档

    第一步 入门 检查版本 python -m django --version 创建第一个项目 django-admin startproject mysite 运行 python manage.py ...

  5. 算法图解学习笔记01:二分查找&大O表示法

    二分查找 二分查找又称折半查找,其输入的必须是有序的元素列表.二分查找的基本思想是将n个元素分成大致相等的两部分,取a[n/2]与x做比较,如果x=a[n/2],则找到x,算法中止:如果x<a[ ...

  6. 【Linux相识相知】文件查找(locate/find)

    在用linux操作系统的时候,当我们忘记之前某个文件存储的位置,但是知道其文件名或者模糊的知道其文件名,我们都可以通过文件查找工具来查找,linux提供两种常用的查找工具,locate和find,在日 ...

  7. Linux文件查找与打包

    一.文件查找 locate与find是经常使用的Linux 命令,刚接触Linux时对这两个命令的使用傻傻的分不清.现在我们来对比一下两个命令到底有哪些区别. 1.1 locate locate让使用 ...

  8. Java实验项目三——递归实现字符串查找和替换操作

    Program:按照下面要求实现字符串的操作: (1)设计一个提供下面字符串操作的类 1)编写一个方法,查找在一个字符串中指定字符串出现的次数. 2)编写一个方法,参数(母字符串,目标字符串,替换字符 ...

  9. 【数据结构与算法Python版学习笔记】查找与排序——散列、散列函数、区块链

    散列 Hasing 前言 如果数据项之间是按照大小排好序的话,就可以利用二分查找来降低算法复杂度. 现在我们进一步来构造一个新的数据结构, 能使得查找算法的复杂度降到O(1), 这种概念称为" ...

  10. 企业IT管理员IE11升级指南【17】—— F12 开发者工具

    企业IT管理员IE11升级指南 系列: [1]—— Internet Explorer 11增强保护模式 (EPM) 介绍 [2]—— Internet Explorer 11 对Adobe Flas ...

随机推荐

  1. ASP.NET Core开发者指南(转发)

    ASP.NET Core开发者指南 2019年ASP.NET Core开发者指南: 你可以在下面找到一张图,该图展示了你可以选取的路径及你想学习的库,从而成为一名 ASP.NET Core 开发者.& ...

  2. java.sql.SQLException: Listener refused the connection with the following error: ORA-12505, TNS:list

    package DisplayAuthors; import  java.sql.*; public class DisplayAuthors  { private static final  Str ...

  3. JndiObjectFactoryBean 配置数据源

    转: JndiObjectFactoryBean 配置数据源 2017年08月29日 22:04:28 病毒先生 阅读数:7338   版权声明:本文为博主原创文章,未经博主允许不得转载. https ...

  4. [log4j]log4j简单配置

    步骤: 1.导入jar包:log4j-1.2.17.jar 2.编写log4j配置文件:log4j.properties ### set log levels - for more verbose l ...

  5. zabbix(1)基础知识

    一.工作原理 一个监控系统运行的大概的流程是这样的: zabbix agent需要安装到被监控的主机上,它负责定期收集各项数据,并发送到zabbix server端,zabbix server将数据存 ...

  6. Angular引入第三方库

    原文已经写的很好了.原文链接: https://blog.csdn.net/yuzhiqiang_1993/article/details/71215232 加上2点给自己用,引入bootstrap样 ...

  7. DELPHI 通用的数据记录复制过程

    //表名,关键字段名,单条内容的SQL语句,产生新记录的值 function Tfrmdmmain.CopyTbale(const tablename, fileldname, swhere, new ...

  8. Python-数据库连表查询、子查询

    连表查询 [实例]通过例子来熟悉连表查询的概念 # 第一步:建表 # 建立英雄职业分类表格 create table classification( id int, name varchar(20) ...

  9. C++笔记(1)——Anniversary

    世界太喧闹,不如敲代码. 直接上题目: Zhejiang University is about to celebrate her 122th anniversary in 2019. To prep ...

  10. flask 之(六) --- API|RestfulApi

    接口概念 IOP:面向接口编程,不再关注具体的实现:只关注输入.输出. http://www.ruanyifeng.com/blog/2018/10/restful-api-best-practice ...