Linux下的find指令详解

在Linux下有很多查找指令:

  • locate
  • whereis
  • which
  • find

  在这些查找指令中功能最强大的当属find指令了。find命令在目录结构中搜索文件,并执行指定的操作。Linux下find命令提供了相当多的查找条件,功能很强大。即使系统中含有网络文件系统,find命令在该文件系统中同样有效。所以在本片博客中主要讨论find命令。

(一)find命令的格式:find 路径 -命令参数 [输出形式];

路径:所要搜索的目录及其所有子目录。默认为当前目录。

命令参数:要查找文件的特征。如果参数为空则返回当前目录及子目录下的所有文件

(二)find命令的常用参数:

  • 根据文件名或正则表达式匹配搜索:

    使用-name参数指定文件名必须匹配的字符串:(-name之前的.可加可不加)

  • 具有条件限制的查找:

    -a  与条件

    -o  或条件

    -not 非条件(此参数的功能类似于否定参数‘!’)

find -name "t*" -a -name "*.text"  //查找以t开头并且以.text结尾的文件
find -name "t*" -o -name "*.text"  //查找以t开头或以.text结尾的文件
find -not -name "t*" -o -name "*.text"  //查找不以t开头或以.text结尾的文件

-path  这个参数用于将整个路径作为一个整体进行匹配。

find /home -path "*.c"

  • 设定find命令在子目录中遍历的深度参数:

    -maxdepth

    -mindepth

find -maxdepth 2 -type f  //列出两层深度之间的普通文件
  • 根据文件类型搜索:

文件类型   类型参数
 普通文件    f
 符号文件    l
 目录       d
 字符设备    c
 块设备     b
 套接字     s
 管道文件    p

find -type l  //查找此目录及子目录以下的所有符号文件
find -type f  //普通文件

字符设备文件,块设备文件,套接字文件,管道文件可以到根目录下查找:(cd /)

  • 根据文件时间进行查找:

    linux文件系统中的每个文件都有三种时间戳:

    1. 访问时间(atime——access time):就是上次访问这个文件的时间。
     2. 改变时间(ctime——change time):就是文件的inode改变的时间(什么是inode?)当你往一个文件中添加数据或者删除数据的时候,修改文件所有者的时候,链接改变的时候,文件的ctime就会发生改变。
     3. 修改时间(mtime——modification time):就是文件的内容上一次发生改变的时候的时间。

  • find -type f -atime -7   #查找7天内被访问的文件
    find -type f -atime  7   #查找恰好在7天前被访问的文件
    find -type f -atime +7   #查找超过7天没被访问的文件

-atime,-ctime,-mtime可作为find的时间参数,单位是天。还有基于“分钟”的,-amin,-mmin
 -cmin。这些值通常还带有+或-:+表示大于,-表示小于。

-newer参数,我们可以指定一个用于比较时间戳的参考文件,然后找出比参考文件更新的所有文件。

find -type f -newer test4  //查找当前目录及子目录下比test4更新的文件
  • 基于文件大小的查找

    -size参数

find -type f -size +45  //查找文件大小比45大的普通文件
find -type f -size  45  //查找文件大小为45的普通文件
find -type f -size -45  //查找文件大小比45小的普通文件
  • 基于文件权限和文件所有人的查找

    -perm

    -user

find -type f -perm 664   //查找权限为664的普通文件
find -type f -user lee   //查找所有人为lee的普通文件
  • 结合find执行命令或动作

    -exec  find命令最强大的参数之一

find -type f -name "*.c" -exec cat> file.txt \;  #将所有.c文件拼接起来写入单个文件file.txt中
find -type f -mtime +10 -name "*.text" -exec cp /5_15   #将10天前的.text文件复制到/tmp下
  • find与xargs结合使用
  • xargs参数  将标准输入转换成命令行参数

find -type f -name "*.txt" -print0 |xargs  -0 rm -f   #将匹配到的文件删除,xargs -0将 \0作为输入定界符。
find -type f -name "*.c" -print0 | xargs  -0 -l     #统计所有c程序文件的行数
时间: 2024-10-12 13:36:56

Linux下的find指令详解的相关文章

Linux下ORACLE客户端安装详解

1.首先去oracle官网下载以下安装包(http://www.oracle.com/technetwork/topics/linuxsoft-082809.html) instantclient-basic-linux.x64-11.2.0.3.0.zip instantclient-odbc-linux-11.2.0.3.0.zip instantclient-sdk-linux.x64-11.2.0.3.0.zip instantclient-sqlplus-linux.x64-11.2.

Linux下DNS服务器搭建详解

 Linux下DNS服务器搭建详解 DNS  即Domain Name System(域名系统)的缩写,它是一种将ip地址转换成对应的主机名或将主机名转换成与之相对应ip地址的一种机制.其中通过域名解析出ip地址的叫做正向解析,通过ip地址解析出域名的叫做反向解析. 下面对DNS的工作流程及原理进行简要说明 DNS的查询流程:需要解析服务的Client先查看本机的/etc/hosts:若无结果,则client查看本地的DNS缓存服务器:若无结果,则查找所属域的首选DNS服务器:若此时本地首选DN

Linux下彻底卸载mysql详解

Linux下彻底卸载mysql详解 一.使用以下命令查看当前安装mysql情况,查找以前是否装有mysql 1 rpm -qa|grep -i mysql 可以看到如下图的所示: 显示之前安装了: MySQL-client-5.5.25a-1.rhel5 MySQL-server-5.5.25a-1.rhel5 2.停止mysql服务.删除之前安装的mysql 删除命令:rpm -e –nodeps 包名 1 2 rpm -ev MySQL-client-5.5.25a-1.rhel5  rpm

Linux下的文件目录结构详解

Linux下的文件目录结构详解 / Linux文件系统的上层根目录 /bin 存放用户可执行的程序 /boot 操作系统启动时所需要的文件 /dev 接口设备文件目录,例如:had表示硬盘 /etc 有关系统设置与管理的文件 /home 一般用户的主目录或者FTP站点管理目录 /mnt 装置的文件系统加载点,例如:光驱.软盘等... /proc 目前系统核心与程序执行的信息. /root 管理员的主目录 /sbin 此目录存放系统启动时所需要执行的程序 /tmp 用来存放暂存盘的目录 /usr

linux下ssh连接缓慢详解

摘自:https://blog.csdn.net/asd2479745295/article/details/83006379 linux下ssh连接缓慢详解原创皮的开心 最后发布于2018-10-11 09:13:37 阅读数 1824 收藏展开    最近发现公司新linux控制器使用ssh连接特别慢,大概要10秒钟左右,scp也是需要10秒左右,但是ping速度特别快.使用ssh -l IP -v 可以查看连接卡在,SSH2_MAG_SERVICE_ACCEPT received后,停顿了

Linux下面的yum命令详解

yum(全称为 Yellow dog Updater, Modified)是一个在Fedora和RedHat以及SUSE中的Shell前端软件包管理器.基於RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软体包,无须繁琐地一次次下载.安装.yum提供了查找.安装.删除某一个.一组甚至全部软件包的命令,而且命令简洁而又好记. yum的命令形式一般是如下:yum [options] [command] [package ...]其中的[opti

Linux下套接字详解(十)---epoll模式下的IO多路复用服务器

epoll模型简介 epoll可是当前在Linux下开发大规模并发网络程序的热门人选,epoll 在Linux2.6内核中正式引入,和select相似,其实都I/O多路复用技术而已,并没有什么神秘的. 其实在Linux下设计并发网络程序,向来不缺少方法,比如典型的Apache模型(Process Per Connection,简称PPC),TPC(Thread PerConnection)模型,以及select模型和poll模型,那为何还要再引入Epoll这个东东呢?那还是有得说说的- 常用模型

Linux下使用Corosync+Pacemaker详解及安装

Corosync详解 OpenAIS概述 OpenAIS是基于SA Forum 标准的集群框架的应用程序接口规范.OpenAIS提供一种集群模式,这个模式包括集群框架,集群成员管理,通信方式,集群监测等,能够为集群软件或工具提供满足 AIS标准的集群接口,但是它没有集群资源管理功能,不能独立形成一个集群.OpenAIS组件包括AMF,CLM,CKPT,EVT,LCK,MSG,TMR,CPG,EVS等,因OpenAIS分支不同,组件略有不同.(下面介绍)OpenAIS主要包含三个分支:Picach

linux下grub相关知识详解

一.grub相关知识详解 (1)grub:GRand Unified Bootloader grub 0.x :grub legacy grub 1.x : grub2 grub legacy: stage1:mbr的bootloader阶段 stage1_5:mbr之后的扇区,让stage1的bootloader能够识别stage2所在分区的文件系统 stage2:磁盘分区(/boot/grub/) 配置文件:/etc/grub.conf-->/boot/grub/grub.conf stag