linux命令行之find详解
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详解相关推荐
- Linux命令 - /etc/group文件详解
Linux命令 - /etc/group文件详解 在Linux /etc/group文件是有关于系统管理员对用户和用户组管理的文件,linux用户组的所有信息都存放在/etc/group文件中.具 ...
- Python必备基本技能——命令行参数args详解
Python必备基本技能--命令行参数args详解 1. 效果图 2. 源码 2.1 简单命令行参数 2.1 轮廓检测源代码 参考 这篇博客将介绍一项开发人员.工程师和计算机科学家必备的技能--命令行 ...
- linux命令如何查看dns,详解Linux系统使用dig/nslookup命令查看dns解析的方法
今天主要介绍一下怎么去使用dig/nslookup命令查看dns解析.下面,我们一起来看. 一.dig命令 Dig是一个在类Unix命令行模式下查询DNS包括NS记录,A记录,MX记录等相关信息的工具 ...
- 自动化测试框架[Cypress命令行执行测试详解]
前提 已经熟练掌握了Cypress的基本知识,请参考自动化测试框架[Cypress概述]和自动化测试框架[各自动化测试框架比较] 已经熟练掌握Cypress环境配置,请参考自动化测试框架[Cypres ...
- 命令行运行JMeter详解
1.为什么要命令行执行脚本? 本文介绍如何从命令行运行JMeter,那么宏哥先来说说,为什么要命令行执行脚本,日常测试过程中发现,在大数量并发时,jmeterGUI界面时长宕机.卡死,在这种情况下我们 ...
- Tortoisehg hg命令行工作方式详解
一 分布式的源码管理工具Mercurial mercurial 作为3大主流的分布式源码管理工具,已经被广泛的使用. 例如 googlecode.com 和 codeplex.com 都支持mercu ...
- cacti命令行添加监控详解
命令行添加监控项目主要用到几个cacti自带的php脚本,分别在cli目录下: add_device.php:添加主机 add_graphs.php:添加相应主机的监控项目 add_tree.php: ...
- Outlook 2003命令行参数开关详解
启动 Microsoft Outlook 的命令是 Outlook.exe.命令行参数开关是正斜杠后跟开关名和开关具有的任何参数. 开关的用法 查找 Microsoft Outlook 可执行文件 O ...
- python:argparse命令行解析模块详解
argparse命令行解析模块学习 import argparse parser = argparse.ArgumentParser() #类似于初始化吧 parser.parse_args() #解 ...
最新文章
- 你不得不会的MarkDown--手把手教你掌握MarkDown
- 我们是在搞学术,还是被学术搞?
- Mac使用nginx+rtmp服务器
- java.lang.RuntimeException: Unable to start activity ComponentInfo
- python控制台输出到文件_Python print 立即打印内容到重定向的文件
- Leecode 496. 下一个更大元素 I——Leecode每日一题系列
- 针对.NET开发者(neo-charm) 1.0 的NEO区块链架构参考模型
- 积木机器人拼装图恐龙图纸_机器人积木模型--恐龙积木拼装对战游戏 v App Storu...
- hibernate 逆向工程对数据库进行CRUD操作
- pcs7组态虚拟机中的服务器,pcs7组态虚拟机中的服务器(ECS700无法连接到组态服务器)...
- 关于冯乐乐《Shader入门精要 》书中基础纹理一章的一些笔记
- OCM实验-备份恢复-控制文件
- Win10系统电脑连接打印机的操作方法教学
- 在 Intel NUC8i7HVK 上安装CentOS7
- 三年程序员生涯的感悟、总结和憧憬
- layui tab用法大全,一键复制粘贴即可使用
- Python+Django+Mysql开发在线美食推荐网 协同过滤推荐算法在美食网站中的运用 基于用户、物品的协同过滤推荐算法 个性化推荐算法、机器学习、分布式大数据、人工智能开发
- 分布式强化学习之D4PG
- 阿里聚安全 2016 年报阿里聚安全 2016 年报
- 研磨23种大话设计模式------适配器模式
热门文章
- 皮一皮:35岁后你做什么?
- 为什么中国程序员工作不轻松,加班多?
- Spring Cloud Gateway真的有那么差吗?
- Spring Cloud构建微服务架构:消息驱动的微服务(消费分区)【Dalston版】
- error: ‘__declspec‘ attributes are not enabled; use ‘-fdeclspec‘ or ‘-fms-extensions‘ to enabl
- EfficientNetV2 笔记
- python 字符串补齐
- python 图像频谱
- params.has(paddings) in function 'cv::dnn::PaddingLayerImpl::PaddingLayerImpl'
- python 模板匹配多个物体