shell: find命令的使用方法

shell命令find例子全解析 本文的例子均来源于man手册第一章节的find,man 1 find查看。 阅读详情

原文:

http://www.cnblogs.com/serendipity/articles/2133385.html

http://linux.chinaunix.net/techdoc/develop/2007/08/21/965951.shtml


一、find 命令格式


1、find命令的一般形式为;

find pathname -options [-print -exec -ok ...]


2、find命令的参数;

pathname: find命令所查找的目录路径。例如用.来表示当前目录,用/来表示系统根目录。
-print: find命令将匹配的文件输出到标准输出。
-exec: find命令对匹配的文件执行该参数所给出的shell命令。相应命令的形式为'command' {  } \;,注意{ }和\;之间的空格。
-ok: 和-exec的作用相同,只不过以一种更为安全的模式来执行该参数所给出的shell命令,在执行每一个命令之前,都会给出提示,让用户来确定是否执行。


3、find命令选项

-name 

按照文件名查找文件。

-perm 
按照文件权限来查找文件。

-prune 
使用这一选项可以使find命令不在当前指定的目录中查找,如果同时使用-depth选项,那么-prune将被find命令忽略。

-user 
按照文件属主来查找文件。

-group 
按照文件所属的组来查找文件。

-mtime -n +n 
按照文件的更改时间来查找文件, - n表示文件更改时间距现在n天以内,+ n表示文件更改时间距现在n天以前。find命令还有-atime和-ctime 选项,但它们都和-m time选项。

-nogroup 
查找无有效所属组的文件,即该文件所属的组在/etc/groups中不存在。

-nouser 
查找无有效属主的文件,即该文件的属主在/etc/passwd中不存在。
-newer file1 ! file2 

查找更改时间比文件file1新但比文件file2旧的文件。
-type 

查找某一类型的文件,诸如:

b - 块设备文件。
d - 目录。
c - 字符设备文件。
p - 管道文件。
l - 符号链接文件。
f - 普通文件。

-size n:[c] 查找文件长度为n块的文件,带有c时表示文件长度以字节计。
-depth:在查找文件时,首先查找当前目录中的文件,然后再在其子目录中查找。
-fstype:查找位于某一类型文件系统中的文件,这些文件系统类型通常可以在配置文件/etc/fstab中找到,该配置文件中包含了本系统中有关文件系统的信息。

-mount:在查找文件时不跨越文件系统mount点。
-follow:如果find命令遇到符号链接文件,就跟踪至链接所指向的文件。
-cpio:对匹配的文件使用cpio命令,将这些文件备份到磁带设备中。

另外,下面三个的区别:

   -amin n
  查找系统中最后N分钟访问的文件

  -atime n
  查找系统中最后n*24小时访问的文件

  -cmin n
  查找系统中最后N分钟被改变文件状态的文件

  -ctime n
  查找系统中最后n*24小时被改变文件状态的文件

    -mmin n
  查找系统中最后N分钟被改变文件数据的文件

  -mtime n
  查找系统中最后n*24小时被改变文件数据的文件


4、使用exec或ok来执行shell命令

使用find时,只要把想要的操作写在一个文件里,就可以用exec来配合find查找,很方便的

在有些操作系统中只允许-exec选项执行诸如l s或ls -l这样的命令。大多数用户使用这一选项是为了查找旧文件并删除它们。建议在真正执行rm命令删除文件之前,最好先用ls命令看一下,确认它们是所要删除的文件。

exec选项后面跟随着所要执行的命令或脚本,然后是一对儿{ },一个空格和一个\,最后是一个分号。为了使用exec选项,必须要同时使用print选项。如果验证一下find命令,会发现该命令只输出从当前路径起的相对路径及文件名。

例如:为了用ls -l命令列出所匹配到的文件,可以把ls -l命令放在find命令的-exec选项中

# find . -type f -exec ls -l {  } \;
-rw-r--r--    1 root     root        34928 2003-02-25  ./conf/httpd.conf
-rw-r--r--    1 root     root        12959 2003-02-25  ./conf/magic
-rw-r--r--    1 root     root          180 2003-02-25  ./conf.d/README

上面的例子中,find命令匹配到了当前目录下的所有普通文件,并在-exec选项中使用ls -l命令将它们列出。
在/logs目录中查找更改时间在5日以前的文件并删除它们:

$ find logs -type f -mtime +5 -exec rm {  } \;

记住:在shell中用任何方式删除文件之前,应当先查看相应的文件,一定要小心!当使用诸如mv或rm命令时,可以使用-exec选项的安全模式。它将在对每个匹配到的文件进行操作之前提示你。

在下面的例子中, find命令在当前目录中查找所有文件名以.LOG结尾、更改时间在5日以上的文件,并删除它们,只不过在删除之前先给出提示。

$ find . -name "*.conf"  -mtime +5 -ok rm {  } \;
< rm ... ./conf/httpd.conf > ? n

按y键删除文件,按n键不删除。

任何形式的命令都可以在-exec选项中使用。

在下面的例子中我们使用grep命令。find命令首先匹配所有文件名为“ passwd*”的文件,例如passwd、passwd.old、passwd.bak,然后执行grep命令看看在这些文件中是否存在一个sam用户。

# find /etc -name "passwd*" -exec grep "sam" {  } \;
sam:x:501:501::/usr/sam:/bin/bash


二、find命令的例子;


1、查找当前用户主目录下的所有文件:

下面两种方法都可以使用

$ find $HOME -print
$ find ~ -print



2、让当前目录中文件属主具有读、写权限,并且文件所属组的用户和其他用户具有读权限的文件;

$ find . -type f -perm 644 -exec ls -l {  } \;


3、为了查找系统中所有文件长度为0的普通文件,并列出它们的完整路径;

$ find / -type f -size 0 -exec ls -l {  } \;


4、查找/var/logs目录中更改时间在7日以前的普通文件,并在删除之前询问它们;

$ find /var/logs -type f -mtime +7 -ok rm {  } \;


5、为了查找系统中所有属于root组的文件;

$find . -group root -exec ls -l {  } \;
-rw-r--r--    1 root     root          595 10月 31 01:09 ./fie1


6、find命令将删除当目录中访问时间在7日以来、含有数字后缀的admin.log文件。

该命令只检查三位数字,所以相应文件的后缀不要超过999。先建几个admin.log*的文件 ,才能使用下面这个命令

$ find . -name "admin.log[0-9][0-9][0-9]" -atime -7  -ok
rm {  } \;
< rm ... ./admin.log001 > ? n
< rm ... ./admin.log002 > ? n
< rm ... ./admin.log042 > ? n
< rm ... ./admin.log942 > ? n


7、为了查找当前文件系统中的所有目录并排序;

$ find . -type d | sort
详细介绍:国产操作系统银行麒麟V10的下载和安装 银河麒麟是由。银河麒麟已经发展为银河麒麟服务器操作系统、桌面操作系统、嵌入式操作系统、麒麟云、操作系统增值产品为代表的产品线。为攻克中国软件核心技术“卡脖子”的短板,银河麒麟建设自主的开源供应链,发起中国首个开源桌面操作系统根社区openKylin,银河麒麟操作系统以openKylin等自主根社区为依托,发布最新版本。 阅读详情

相关推荐

保姆级教程:用SSC Tool 5.13为先楫HPM6E00EVK生成8轴EtherCAT从站代码(含XML配置详解)

本文详细介绍了如何使用SSC Tool 5.13为先楫HPM6E00EVK开发板配置8轴EtherCAT从站,包括XML文件深度配置、代码生成与工程整合、烧录与调试技巧。教程涵盖从环境准备到性能优化的全流程,帮助开发者快速实现符合CIA402标准的8轴控制。

weixin_30352645的博客 254

内存马查杀工具FindShell试用

首先使用冰蝎创建一个内存马 成功进入内存马界面 接下来尝试使用findshell查杀,项目主页为 https://github.com/4ra1n/FindShell 服务器上首先部署代码,执行 git clone https://github.com/4ra1n/FindShell.git 然后进入到FindShell目录,打包项目,执行(如果没有mvn命令需要先yum -y install apache-maven安装) mvn package 打包后在targe..

HRay's blog 7541

USB3.0 Type-B连接器SSTX/SSRX信号定义常见错误与硬件设计避坑指南

本文详细解析了USB3.0 Type-B连接器中SSTX/SSRX信号的定义标准与常见设计错误。针对连接器厂商图纸可能出现的信号标识错误,提供了实用的排查方法和硬件设计避坑指南,帮助工程师避免因引脚定义颠倒导致的通信降级或故障,确保USB3.0高速传输的稳定性。

gg901的博客 1263

shell脚本之find

shell脚本之find ​ 实时查找工具,通过遍历指定路径下的文件系统完成文件查找。 ​ find命令的工作方式如下:沿着文件层次结构向下遍历,匹配符合条件的文件,执行响应的操作。 语法:find [options]… [查找条件][处理动作] ​ 查找路径:指定具体的目标路径,默认为当前目录。 ​ 查找条件:指定的查找标准,可以是文件名、大小、类型、权限等,默认为找出指定路径下的所有文件。 根据文件名查找 ​ -name “文件名称”:支持通配符查找; ​ -iname “文件名称”:不区分文件名大

Doudou_4174的博客 8204

对族实例进行任意的矩阵变换,需要什么样的族?

问:一个小问题,想向您请教一下。 能不能实现一个这样的操作:创建了一个常规模型的FamilyInstance,然后知道旋转和平移的矩阵,能否根据变换矩阵更新FamilyInstance的位置,绕任意轴旋转任意角度。 请问什么样的实体才能在revit项目文件中任意旋转?貌似一般的实例只能在XY平面内旋转,并且LocationPoint中只有一个Rotation参数。答:您好,因为Revit里面的构件

我爱Revit —— BIM应用及BIM应用软件解决方案专栏 3626

linux上使用tun/tap设备模拟一个虚拟网卡,并将该虚拟网卡连接到新创建的网桥上

tun/tap设备是操作系统内核中的虚拟网络设备,是用软件模拟的网络设备,提供与硬件网络设备完全相同的功能。主要用于用户空间和内核空间传递报文。tun/tap对于硬件网络设备而言,一端连接的是物理网络,一端连接的是网络协议栈。对于tun/tap设备而言,一端连接的是应用程序(通过 字符设备文件),一端连接的是网络协议栈。

糖果墙的博客 6411

shell脚本之find命令

shell脚本之find命令

techenliu的博客 2463

ROS机器人未知环境自主探索功能包explore_lite最全源码详细解析(二)

本系列文章主要针对ROS机器人常使用的未知环境自主探索功能包explore_lite展开全源码的详细解析,并进行概括总结。 本系列文章共包含六篇文章,前五篇文章主要介绍explore_lite功能包中 explore.cpp、costmap_tools.h、frontier_search.cpp、costmap_client.cpp等源码实现文件中全部函数的详细介绍,第六篇文章进行概括总结,包含自主探索功能包explore_lite的简介,实现未知环境自主探索功能的原理及流程总结,效果演示,使用功能包exp

慕羽★的博客 1648

【shell】find命令用法详解

find是 Unix 和类 Unix 操作系统(如 Linux 和 macOS)中的一个命令行工具,用于在目录树中查找文件和目录。它可以基于名称、类型、大小、时间戳等多种条件进行搜索,并可以对找到的文件执行指定的操作。

浩瀚之水的专栏 2942

智能驾驶辅助系统(ADAS)全解析:功能详解 + 技术原理 + 实战案例

智能驾驶辅助系统(ADAS)是现代汽车技术的重要组成部分,旨在提升驾驶安全性和便利性。本文详细解析了ADAS的多个功能模块,包括自适应巡航控制(ACC)、车道偏离预警/车道保持辅助(LDW/LKA)、前向碰撞预警/自动紧急制动(FCW/AEB)、盲区检测/变道辅助(BSD/BSM)、倒车影像、自动泊车辅助(APA)、交通标志识别(TSR)、自动远光控制(AHB)、后方交叉来车预警(RCTA)和驾驶员疲劳监测。每个功能模块都基于特定的技术原理,如毫米波雷达、摄像头、传感器融合和深度学习算法,以实现对车辆周围环

weixin_43199439的博客 2099

ADRC自抗扰算法优化(PLC梯形图篇)

ADRC自抗扰算法PLC梯形图完整源代码请参看下面博客文章:ADRC自抗扰控制算法(含梯形图完整源代码和算法公式)_adrc算法_RXXW_Dor的博客-优快云博客PLC的自抗扰控制(ADRC)算法_RXXW_Dor的博客-优快云博客_adrc算法1、自抗扰控制算法,网上很多文章有所讲解,大家也可以关注韩京清教授的论文和书籍,这里就不赘述了,下面给出梯形图+SCL代码。

RXXW_Dor的博客 2282

find命令查找的排序规则探索以及排序方法

find命令的搜寻条件直接关系到输出结果,默认应该是按从左到右的的顺序判断,如果有逻辑运算(-not、-and、-or)还得再判断条件组合。find查询的结果是找到一个匹配的项就立即输出结果,一边查找一边输出,查找到的内容不是一次性输出的,所以可能没有统一排序。到此这篇关于find命令的结果顺序是什么的文章就介绍到这了,希望对你有所帮助。但是具体排序规则需要分析find命令的底层实现了。

xiaoweids的博客 1453

【智能车Code review】——环岛的判定与补线操作

【1】效果展示图 状态1、状态2 状态3 状态4、状态5 状态6 状态7 状态8 【2】状态机设定需要的参数 以右环岛为例: k_left:左线的斜率 rou_of_left:左线的方差 last_rou_of_left:上一帧的左线方差 l_start:左线第一行为黑的所在行 right_turn_down; right_turn_middle; right_turn_up; 左线的下、中、上拐点 fiv_width[i]:第i行的赛道宽度 leftline_du

hanhan的博客 2万+

find命令扩展

1.1方法一  |xargs 通过|xargs将前面命令的执行结果传给后面。 [root@znix ~]# find /clsn/ -type f -name "*.sh" |xargs ls -l -rw-r--r--. 1 root root 7 Aug 17 17:00 /clsn/test/del.sh -rw-r--r--. 1 root root 8 Aug ...

anchang5350的博客 166

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

shell find查找命令

命令格式 find 路径 选项 操作 1.在vi中使用的查找替换方法 利用 :s 命令可以实现字符串的替换。具体的用法包括: :s/str1/str2/ 用字符串 str2 替换行中首次出现的字符串 str1 :s/str1/str2/g 用字符串 str2 替换行中所有出现的字符串 str1 :.,$ s/str1/str2/g 用字符串 str2 替换正文当前行到末尾所有出现的字符串 str1

BigBirds911的博客 987

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

Shell 脚本专家指南 学习笔记3 目录的复制

1 使用cp cp -Rp * /dest/dir -R:递归复制目录结构 -p:保持原始文件的访问权限、所有权和访问修改时间 问题:没有使用原始文件的创建时间,而是使用了执行复制时的修改时间;不能保持硬链接  使用-a选项,尽可能多地保持了源文件的特性,包括硬链接 cp -a * /dest/dir 2 使用tar tar -cvf - * | (cd /dest

ysdaniel的专栏 1681

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

SHELL命令查找文件的方式

find . -name *.sh | xargs ls -l   for aaa in $(find . -name "*.sh");do ls -l $aaa;done

海阔天空的专栏 715

export:找不到命令_linux命令(一)

source使Shell读入指定的Shell程序文件并依次执行文件中的所有语句。(该命令通常用命令“.”来替代。)使用范例:source filename . filename(中间有空格)source filename:这个命令其实只是简单地读取脚本里面的语句依次在当前shell里面执行,没有建立新的子shell。那么脚本里面所有新建、改变变量的语句都会保存在当前shell里面。当前脚...

weixin_29204121的博客 2686

find: paths must precede expression

&lt; In Linux bash you may face an error while using wildcard * to search files. For e.g. trying to search all jar files with following command:find . -name *.jar ...

渴死的火烈鸟 223

linux查找php文件是否存在,Linux查看文件是否存在的方法

Linux查看文件是否存在的两个方式:find命令或者shell脚本。1、find命令(1)find是linux下用于查找文件的通用方法。(2)find语法: find [指定查找目录] [查找规则] [查找完后执行的action](3)例如:find /tmp -name wa* -type l ,是在/tmp下查找名为wa开头且类型为符号链接的文件。找到就表示存在。2、shell...

weixin_30240765的博客 290

开发人员需要熟知的常用Linux命令之五:Find

本篇中我们将重点介绍三个常用工具的使用:Find、VI、Scp; Find命令是一个非常有效的工具,它可以遍历当前目录甚至于整个文件系统来查找某些文件或目录。 Find命令的一般形式为: find pathname -options [-print -exec -ok] 让我们来看看该命令的参数: 参数 描述 pathname find命令所查找的目录路径。例如用.来表示当前...

133

在vi中使用的查找替换方法

1、在vi中使用的查找替换方法利用 :s 命令可以实现字符串的替换。具体的用法包括::s/str1/str2/ 用字符串 str2 替换行中首次出现的字符串 str1:s/str1/str2/g 用字符串 str2 替换行中所有出现的字符串 str1:.,$ s/str1/str2/g 用字符串 str2 替换正文当前行到末尾所有出现的字符串 str1:1,$ s/str1

活到老、学到老 1025

SHELL从目录下拷贝文件到另一个目录下的两种方法

shell 从目录下拷贝文件到另一个目录下的两种方法方法一: cat查询文件中的目录通过ls重定向方法二: find查找路径下的文件进行遍历 方法一: cat查询文件中的目录通过ls重定向 echo "`cd /home/hadoop/test1/data`" echo "`ls * >b`" cat b | grep -v "tmp"|grep -v "temp" |grep -v "cmd"> c for i in `cat c`;do { if [ $? -eq 0 ];then cp

倚天的博客 1万+

Shell小技巧(九十四)搜索文件并统计结果文件大小总合

filesSize.sh代码: #!/bin/bash find -type f -name "*.log" -exec du -k {} \; | awk 'BEGIN{sum=0}{sum=sum+$1}END{print sum} 执行:/bin/bash filesSize.sh 如果仅对当前路径下文件进行搜索,也可以使用ls命令。 ls -l *.log | awk 'BEGIN{sum=0}{sum=sum+$5}END{print sum}' 执行结果: 注:ls和find

bigwood99的博客 787

重庆思庄技术分享——linux 使用find删除指定日期之前的文件

2. 或者用:find /home/oracle/backup -ctime +40 -type f | xargs。在最后加入:00 2 * * * root /home/oracle/backupclear.sh。-name *.mail[12] --设置文件名称中包含mail1或者mail2;-exec rm -f --查找完毕后执行删除操作;/email/v1_bak --设置查找的目录;-mtime +92 --设置时间为91天前;-type f --设置查找的类型为文件;

m0_61458430的博客 674
上一篇: shell: .bash_profile和.bashrc的区别(如何设置生效)
下一篇: Linux 的常用网络命令
impressed
博客等级 码龄15年 4粉丝 54原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值