find 目录 条件 选项

find . –print

find . –print0

.指明在当前目录中查找

-print 打印匹配文件的文件名,使用‘\n’作为分隔文件的定位符

-print0 打印匹配文件的文件名,使用null即’\0’作为分隔文件的定位符

1. 根据文件名或整个表达式匹配搜索

find  /home/slynux  -name  “*.txt”  –print

find  /home/slynux  -iname  “*.txt”  –print

-name选项后接文件名,可使用通配符

-iname选项后接文件名,可使用通配符,并忽略大小写

如果相匹配多个条件中的一个,可采用or 条件操作:

find  .  \(  -name  “*.txt”  -o  -name  “*.pdf”  \)  -print

注意:\(  内容  \)  内容与括号之间必须有空格,否则会提示有错误

选项-path可使用通配符匹配文件的路径或文件名,-name总是匹配文件名,而-path则将文件路径(包括文件名)作为一个整体进行匹配

find  /home/users  -path  “*slynux*”  -print

输出结果:

/home/users/list/slynux.txt

/home/users/slynux/eg.css

-regex选项,类似于-path选项,基于正则表达式匹配文件路径

-iregex选项,忽略正则表达式的大小写

正则表达式是通配符的高级形式,可以指定文本模式。

2. find可使用!否定参数,进行反向匹配

find  .  ! -name  “*.txt”  -print

注意:感叹号!和选项-name之间必须保留一个空格

3.基于目录深度进行搜索

-maxdepth 告诉find最大向下查找几级

-mindepth 告诉find应该从此处开始先下查找

打印距离当前目录至少两个子目录的所有文件

find  .  –mindepth  2  -type  f  -print

注意:-maxdepth和-mindepth应作为find的第三个参数(作为第一个查找条件),以提高效率

4. 根据文件类型搜索

find  .  –type  d  -print

5. 根据文件时间进行搜索

-atime(访问时间)、-mtime(修改<内容>时间)、-ctime(改变<权限>时间),以天作为计量

配合: -7或7或+7

类似选项-amin、-mmin、-cmin以分钟作为计量

6.基于文件大小进行查找

find  .  –type  f  -size  +2k      #查找大于2k的文件

find  .  –type  f  -size  -2k      #查找小于2k的文件

find  .  –type  f  -size   2k      #查找等于2k的文件

7. 删除匹配的文件(会实际从硬盘上将文件删除)

-delete 可用来删除find找到的匹配文件

find  .  –type  f  -name  “*.swap”  -delete

8. 基于文件的权限匹配

find  .  -type  f  -perm 644  -print  文件的权限大于或等于644都能匹配

find  .  -type  f  /perm 644  -print  文件的权限小于或等于644都等匹配

find  .  -type  f   perm 644  -print  文件的权限必须等于644才能匹配

9. 基于文件的硬链接数查找 –links

find  .  –links  N                           当前目录中查找硬链接数为N的文件

find  .  –links  +N                         当前目录中查找硬链接数大于N的文件

find  .  –links  -N                         当前目录中查找硬链接数小于N的文件

10. 根据用户或群组进行匹配

find  .  –user  username  -print

find  .  –group  groupname  -print

find  .  –uid uid  -print

find  .  –gid gid  -print

find  .  –nouser  -print

11. find 结合其它命令执行

find  -type  f  -user  root  -exec  chown slynux  {} \;

红色部分是要执行的命令,{}代表find匹配的每个文件

{}和\之间必须有一个空格

最后必须以分号;作为结束符

另外最好使用单引号将花括号引起来,这样可以防止因文件名中含有空格,而导致执行过程出现错误

find  .  –type f  -name “*.c”  -exec cat  {} \;>output.txt

-exec结合多个命令

无法在-exec参数后直接使用多个命令,他只能接受单个指令,不过我们可以将多个命令写到shell脚本中,让手在-exec中使用这个脚本。

-exec  ./commands.sh  {} \;

红色部分是脚本的路径

12. 修剪——将某些文件或目录从搜索过程中排出的技术

find  devel/source_path  \( -name  “.git”  -prune\ )  -o  \( -type  f  -print\ )

\( -name  “.git”  -prune\ )的作用是用于排除,指明了“.git”目录应该被排除掉

find指令使用手册的更多相关文章

  1. Linux C++ 开发常用工具,常用指令工作手册

    vim常用: :set nu显示行数 :set mouse=a 鼠标滑动屏幕,:set ic :set noic 忽略不忽略大小写 /word_to_search\c \c表示忽略大小写 c小写忽略, ...

  2. AT指令(转)

    资料来自网络 附录AT指令简编一. 一般命令1.AT+CGMI 给出模块厂商的标识.2.AT+CGMM 获得模块标识.这个命令用来得到支持的频带(GSM 900,DCS 1800 或PCS 1900) ...

  3. iOS开发——源代码管理——git(分布式版本控制和集中式版本控制对比,git和SVN对比,git常用指令,搭建GitHub远程仓库,搭建oschina远程仓库 )

    一.git简介 什么是git? git是一款开源的分布式版本控制工具 在世界上所有的分布式版本控制工具中,git是最快.最简单.最流行的   git的起源 作者是Linux之父:Linus Bened ...

  4. 浅谈单片机中C语言与汇编语言的转换

    做了一单片机设计,要用C语言与汇编语言同时实现,现将这次设计的感受和收获,还有遇到的问题写下,欢迎感兴趣的朋友交流想法,提出建议. 单片机设计:基于51单片机的99码表设计 软件环境:Proteus8 ...

  5. php.ini 配置详解【转载】

    [PHP]engine = On   #是否启用PHP解析引擎zend.ze1_compatibility_mode = Off #是否在Last-Modified应答头中放置该PHP脚本的最后修改时 ...

  6. php配置参数.md

    php 5.5 配置文件 php.ini Options user_ini.filename string 设定了 PHP 会在每个目录下搜寻的文件名:如果设定为空字符串则 PHP 不会搜寻.默认值是 ...

  7. CocoaPods和git

    CocoaPods是第三方框架的管理工具 CocoaPods 安装使用步骤: 1. 利用 gem 安装 CocoaPods! 1> gem 服务器在国外,提供了非常丰富的终端应用程序! gem ...

  8. 2.2 ARM处理器工作模式

    ARM Architecture Reference Manual Arm 指令框架手册 种工作模式 Processor mode Mode number Description User usr 0 ...

  9. PHP配置详解

    [PHP] ;;;;;;;;;;;;;;;;;;; ; About php.ini ; ;;;;;;;;;;;;;;;;;;; ; This file controls many aspects of ...

随机推荐

  1. HDOJ3231醉

    反正一开始就是瞎几把看题,然后题意理解了,什么飞机?只能去看题解了. 呵呵,可惜,题解看了三个小时,还是一知半解,先写了. - -菜鸡超级详细题解,强行掰弯一波,等下再问问别人吧. OK,OK开始!! ...

  2. Untiy检测各类设备输入

    轴需要单独设置 using UnityEngine; using System.Collections; using UnityEngine.UI; public class OutputKey : ...

  3. HTTP请求头中的那些东西

    一.HTTP请求头是什么? HTTP请求头,HTTP客户程序(例如浏览器),向服务器发送请求的时候必须指明请求类型(一般是GET或者POST).如有必要,客户程序还可以选择发送其他的请求头. 二.HT ...

  4. 如何在VS2010的VC++ 基于对话框的MFC程序中添加菜单

    方法1:亲测 成功  转载自https://social.msdn.microsoft.com/Forums/vstudio/zh-CN/48338f6b-e5d9-4c0c-8b17-05ca3ef ...

  5. C++构造函数与析构函数的解析

    创建一个对象时,常常需要作某些初始化的工作,例如对数据成员赋初值. 注意,类的数据成员是不能在声明类时初始化的.如果一个类中所有的成员都是公用的,则可以在定义对象时对数据成员进行初始化.如: clas ...

  6. bzoj 4909 [Sdoi2017]龙与地下城

    题面 https://www.lydsy.com/JudgeOnline/problem.php?id=4909 题解 目前为止仅仅在LOJ上A掉这道题(Loj真快!) 当然不是标准做法 显然我们只要 ...

  7. BZOJ4653(区间离散化+线段树+决策单调尺取)

    写得很好的题解 一眼过去很像是:排序,然后从前向后扫,有这个区间时插到树里,过去以后再删除.然后事实也是这样做的…… 具体起来: 1.如果考虑暴力的话,一种想法是枚举左端和右端要选取的区间(如果我们按 ...

  8. SpringCloud开发学习总结(八)—— API网关服务Zuul(一)

    大多数情况下,为了保证对外服务的安全性,我们在服务端实现的为服务接口时往往都会有一定的权限校验机制,比如对用户登录状态的校验等:同时为了防止客户端在发起请求时被篡改等安全方面的考虑,还会有一些签名校验 ...

  9. 真tm无聊,这几天。。。

    临近期末了,每天都要和学霸一起上自习. 很不喜欢学习和自己未来没多大用的东西 老师画的那些重点是对我们好吗~ 每天感觉都在折磨自己,不想学,学不进去,心里很烦躁,浮躁. 人生苦短->_-> ...

  10. servlet基础概念

    一.servlet是什么? 运行在Web服务器上(如:tomcat),作为浏览器请求与数据库或其他应用程序之间的中间层 二.servlet主要任务: 1.读取浏览器发送的显式数据(如:html表单)隐 ...