1、find命令

find命令是一个无处不在命令,是linux中最有用的命令之一。find命令用于:在一个目录(及子目录)中搜索文件,你可以指定一些匹配条件,如按文件名、文件类型、用户甚至是时间戳查找文件。下面就通过实例来体验下find命令的强大。

1.1、find命令的一般形式

man文档中给出的find命令的一般形式为:

find [-H] [-L] [-P] [-D debugopts] [-Olevel] [path...] [expression]

其实[-H] [-L] [-P] [-D debugopts] [-Olevel]这几个选项并不常用(至少在我的日常工作中,没有用到过),上面的find命令的常用形式可以简化为:

find [path...] [expression]

path:find命令所查找的目录路径。例如用.来表示当前目录,用/来表示系统根目录

expression:expression可以分为——“-options [-print -exec -ok ...]”

-options,指定find命令的常用选项,下节详细介绍

-print,find命令将匹配的文件输出到标准输出

-exec,find命令对匹配的文件执行该参数所给出的shell命令。

相应命令的形式为'command' {  } \;,注意{   }和\;之间的空格

find ./ -size 0 -exec rm {} \; 

删除文件大小为零的文件 (还可以以这样做:rm -i `find ./ -size 0`  或 find ./ -size 0 | xargs rm -f &)

为了用ls -l命令列出所匹配到的文件,可以把ls -l命令放在find命令的-exec选项中:find . -type f -exec ls -l {  } \;

在/logs目录中查找更改时间在5日以前的文件并删除它们:find /logs -type f -mtime +5 -exec rm {  } \;

-ok,和-exec的作用相同,只不过以一种更为安全的模式来执行该参数所给出的shell命令,在执行每一个命令之前,都会给出提示,让用户来确定是否执行。

find . -name "*.conf"  -mtime +5 -ok rm {  } \;

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

也有人这样总结find命令的结构:

find start_directory test

options

criteria_to_match

action_to_perform_on_results

1.2、find命令的常用选项及实例

-name

按照文件名查找文件。

在/dir目录及其子目录下面查找名字为filename的文件

find . -name "*.c" 在当前目录及其子目录(用“.”表示)中查找任何扩展名为“c”的文件

find /dir -name filename

-perm

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

在当前目录下查找文件权限位为755的文件,即文件属主可以读、写、执行,其他用户可以读、执行的文件

find . -perm 755 –print

-prune

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

在/apps目录下查找文件,但不希望在/apps/bin目录下查找

在/usr/sam目录下查找不在dir1子目录之内的所有文件

find /usr/sam -path "/usr/sam/dir1" -prune -o –print

find /apps -path "/apps/bin" -prune -o –print

-user

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

在$HOME目录中查找文件属主为sam的文件

find ~ -user sam –print

-group

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

在/apps目录下查找属于gem用户组的文件

find /apps -group gem –print

-mtime -n +n

按照文件的更改时间来查找文件, - n表示文件更改时间距现在n天以内,+ n表示文件更改时间距现在n天以前。

在系统根目录下查找更改时间在5日以内的文件

在/var/adm目录下查找更改时间在3日以前的文件

find /var/adm -mtime +3 –print

find / -mtime -5 –print

-nogroup

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

find / –nogroup -print

-nouser

查找无有效属主的文件,即该文件的属主在/etc/passwd中不存在。

find /home -nouser –print

-newer file1 ! file2

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

-type

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

在当前目录下查找除目录以外的所有类型的文件

find /etc -type l –print

在/etc目录下查找所有的符号链接文件

b - 块设备文件。

d - 目录。

find /etc -type d –print

在/etc目录下查找所有的目录

find . ! -type d –print

c - 字符设备文件。

p - 管道文件。

l - 符号链接文件。

f - 普通文件。

-size n:[c] 查找文件长度为n块的文件,带有c时表示文件长度以字节计。

find . -size +1000000c –print

在当前目录下查找文件长度大于1 M字节的文件

find /home/apache -size 100c –print

在/home/apache目录下查找文件长度恰好为100字节的文件

find . -size +10 –print

在当前目录下查找长度超过10块的文件(一块等于512字节)

-depth:在查找文件时,首先查找当前目录中的文件,然后再在其子目录中查找。

find / -name "CON.FILE" -depth –print

它将首先匹配所有的文件然后再进入子目录中查找

-mount:在查找文件时不跨越文件系统mount点。

find . -name "*.XC" -mount –print

从当前目录开始查找位于本文件系统中文件名以XC结尾的文件(不进入其他文件系统)

-follow:如果find命令遇到符号链接文件,就跟踪至链接所指向的文件。

linux命令行之find详解相关推荐

  1. Linux命令 - /etc/group文件详解

    Linux命令 - /etc/group文件详解   在Linux /etc/group文件是有关于系统管理员对用户和用户组管理的文件,linux用户组的所有信息都存放在/etc/group文件中.具 ...

  2. Python必备基本技能——命令行参数args详解

    Python必备基本技能--命令行参数args详解 1. 效果图 2. 源码 2.1 简单命令行参数 2.1 轮廓检测源代码 参考 这篇博客将介绍一项开发人员.工程师和计算机科学家必备的技能--命令行 ...

  3. linux命令如何查看dns,详解Linux系统使用dig/nslookup命令查看dns解析的方法

    今天主要介绍一下怎么去使用dig/nslookup命令查看dns解析.下面,我们一起来看. 一.dig命令 Dig是一个在类Unix命令行模式下查询DNS包括NS记录,A记录,MX记录等相关信息的工具 ...

  4. 自动化测试框架[Cypress命令行执行测试详解]

    前提 已经熟练掌握了Cypress的基本知识,请参考自动化测试框架[Cypress概述]和自动化测试框架[各自动化测试框架比较] 已经熟练掌握Cypress环境配置,请参考自动化测试框架[Cypres ...

  5. 命令行运行JMeter详解

    1.为什么要命令行执行脚本? 本文介绍如何从命令行运行JMeter,那么宏哥先来说说,为什么要命令行执行脚本,日常测试过程中发现,在大数量并发时,jmeterGUI界面时长宕机.卡死,在这种情况下我们 ...

  6. Tortoisehg hg命令行工作方式详解

    一 分布式的源码管理工具Mercurial mercurial 作为3大主流的分布式源码管理工具,已经被广泛的使用. 例如 googlecode.com 和 codeplex.com 都支持mercu ...

  7. cacti命令行添加监控详解

    命令行添加监控项目主要用到几个cacti自带的php脚本,分别在cli目录下: add_device.php:添加主机 add_graphs.php:添加相应主机的监控项目 add_tree.php: ...

  8. Outlook 2003命令行参数开关详解

    启动 Microsoft Outlook 的命令是 Outlook.exe.命令行参数开关是正斜杠后跟开关名和开关具有的任何参数. 开关的用法 查找 Microsoft Outlook 可执行文件 O ...

  9. python:argparse命令行解析模块详解

    argparse命令行解析模块学习 import argparse parser = argparse.ArgumentParser() #类似于初始化吧 parser.parse_args() #解 ...

最新文章

  1. 你不得不会的MarkDown--手把手教你掌握MarkDown
  2. 我们是在搞学术,还是被学术搞?
  3. Mac使用nginx+rtmp服务器
  4. java.lang.RuntimeException: Unable to start activity ComponentInfo
  5. python控制台输出到文件_Python print 立即打印内容到重定向的文件
  6. Leecode 496. 下一个更大元素 I——Leecode每日一题系列
  7. 针对.NET开发者(neo-charm) 1.0 的NEO区块链架构参考模型
  8. 积木机器人拼装图恐龙图纸_‎机器人积木模型--恐龙积木拼装对战游戏 v App Storu...
  9. hibernate 逆向工程对数据库进行CRUD操作
  10. pcs7组态虚拟机中的服务器,pcs7组态虚拟机中的服务器(ECS700无法连接到组态服务器)...
  11. 关于冯乐乐《Shader入门精要 》书中基础纹理一章的一些笔记
  12. OCM实验-备份恢复-控制文件
  13. Win10系统电脑连接打印机的操作方法教学
  14. 在 Intel NUC8i7HVK 上安装CentOS7
  15. 三年程序员生涯的感悟、总结和憧憬
  16. layui tab用法大全,一键复制粘贴即可使用
  17. Python+Django+Mysql开发在线美食推荐网 协同过滤推荐算法在美食网站中的运用 基于用户、物品的协同过滤推荐算法 个性化推荐算法、机器学习、分布式大数据、人工智能开发
  18. 分布式强化学习之D4PG
  19. 阿里聚安全 2016 年报阿里聚安全 2016 年报
  20. 研磨23种大话设计模式------适配器模式

热门文章

  1. 皮一皮:35岁后你做什么?
  2. 为什么中国程序员工作不轻松,加班多?
  3. Spring Cloud Gateway真的有那么差吗?
  4. Spring Cloud构建微服务架构:消息驱动的微服务(消费分区)【Dalston版】
  5. error: ‘__declspec‘ attributes are not enabled; use ‘-fdeclspec‘ or ‘-fms-extensions‘ to enabl
  6. EfficientNetV2 笔记
  7. python 字符串补齐
  8. python 图像频谱
  9. params.has(paddings) in function 'cv::dnn::PaddingLayerImpl::PaddingLayerImpl'
  10. python 模板匹配多个物体