例子1:在root以及子目录查找不包括目录/root/bin的,greek用户的,文件类型为普通文件的,3天之前的名为test-find.c的文件,并将结构输出,find命令如下:

find / -name "test-find.c" -type f -mtime 3 -user greek -prune /root/bin -print

对上述例子搜索出来的文件进行删除操作,命令如下:

find / -name "test-find.c" -type f -mtime 3 -user greek -prune /root/bin -exec rm {} \;

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

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

2.再来看看xargs参数,在使用 find命令的-exec选项处理匹配到的文件时, find命令将所有匹配到的文件一起传递给exec执行。但有些系统对能够传递给exec的命令长度有限制,这样在find命令运行几分钟之后,就会出现溢出错误。错误信息通常是“参数列太长”或“参数列溢出”。这就是xargs命令的用处所在,特别是与find命令一起使用。

find命令把匹配到的文件传递给xargs命令,而xargs命令每次只获取一部分文件而不是全部,不像-exec选项那样。这样它可以先处理最先获取的一部分文件,然后是下一批,并如此继续下去。

在有些系统中,使用-exec选项会为处理每一个匹配到的文件而发起一个相应的进程,并非将匹配到的文件全部作为参数一次执行;这样在有些情况下就会出现进程过多,系统性能下降的问题,因而效率不高;

而使用xargs命令则只有一个进程。另外,在使用xargs命令时,究竟是一次获取所有的参数,还是分批取得参数,以及每一次获取参数的数目都会根据该命令的选项及系统内核中相应的可调参数来确定。

来看看xargs命令是如何同find命令一起使用的,并给出一些例子。下面的例子查找系统中的每一个普通文件,然后使用xargs命令来测试它们分别属于哪类文件

find . -type f -print | xargs file

./.kde/Autostart/Autorun.desktop: UTF-8 Unicode English text    ./.kde/Autostart/.directory: ISO-8859 text\    ......

在整个系统中查找内存信息转储文件(core dump) ,然后把结果保存到/tmp/core.log 文件中:

find / -name "core" -print | xargs echo "" >/tmp/core.log

上面这个执行太慢,我改成在当前目录下查找

find . -name "file*" -print | xargs echo "" > /temp/core.log

cat /temp/core.log    ./file6

3.使用find查找文件的时候怎么避开某个文件目录,那就得看prune这个参数了。

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

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

find [-path ..] [expression] 在路径列表的后面的是表达式-path" /usr/sam" -prune -o -print 是 -path "/usr/sam" -a -prune -o  -print 的简写表达式按顺序求值, -a 和 -o 都是短路求值,与 shell 的 && 和 || 类似如果 -path "/usr/sam" 为真,则求值 -prune , -prune 返回真,与逻辑表达式为真;否则不求值   -prune,与逻辑表达式为假。如果 -path "/usr/sam" -a -prune 为假,则求值 -print, -print返回真,或逻辑表达式为真;否则不求值 -print,或逻辑表达式为真。

这个表达式组合特例可以用伪码写为:

if -path "/usr/sam" then        -prune         else        -print

避开多个文件夹

find /usr/sam \( -path /usr/sam/dir1 -o -path /usr/sam/file1 \) -prune -o -print

圆括号表示表达式的结合。\ 表示引用,即指示 shell 不对后面的字符作特殊解释,而留给 find 命令去解释其意义。

查找某一确定文件,-name等选项加在-o 之后

find /usr/sam \(-path /usr/sam/dir1 -o -path /usr/sam/file1 \) -prune -o -name "temp" -print

我们已经看过了 find 命令的一些更加有用以及有点难懂的功能,但是 find 还可以执行更多的任务。例如,有多个选项可以使 find 与较低的 UNIX 版本和其他操作系统相兼容并允许您执行打印输出到多个文件等操作。

linux命令dh f,linux 下 find 命令的高级用法相关推荐

  1. linux前一个的输出作为后一个参数,将Linux命令的结果作为下一个命令的参数

    查询所有的pid并杀死. jps -l | grep bdcsc2-native-demo | awk '{print $1}' | xargs kill -9 KISS:keep it short ...

  2. 在linux系统环境中 常用的关机命令,Linux常用基础命令整理:关机命令、查看目录下文件命令等...

    整理了一些Linux常用基础命令,欢迎指正. 首先记住四个热键,学会这四个键,收益一辈子. Tab按键---命令补齐功能 Ctrl+c按键---停掉正在运行的程序 Ctrl+d按键---相当于exit ...

  3. Windwos命令工作笔记002---windows下tree命令列出文件目录打印到文件中_过滤文件不知道怎么做啊

    技术交流QQ群[JAVA,.NET,BigData,AI]:170933152 挺好用,一直想记录下来的 windows下tree命令列出文件目录树 tree [path]  /f tree D:AR ...

  4. 批处理常用命令总结和WindowsXP下运行命令使用大全及优化

    关于批处理以及批处理常用命令的总结 [ 一.什么是批处理 ] 批处理文件图标 批处理(Batch),也称为批处理脚本.顾名思义,批处理就是对某对象进行批量的处理.批处理文件的扩展名为 bat . 目前 ...

  5. linux+dns的acl,DNS服务器之三:DNS高级用法(DNS转发、ACL、智能DNS及日志系统) | 旺旺知识库...

    前面两篇DNS文件讲解了基本的安装配置和主从复制: 本文将深入讲解DNS服务器bind98的高级用法,主要包括: DNS转发配置 ACL应用与配置 使用bind实现智能DNS BIND日志系统介绍 一 ...

  6. Linux命令make -f,linux 之命令make

    在linux中,有一个重要的自动化编译命令-make,在源码文件的安装和开发大型项目的时候,都需要用到这个命令, 例 安装程序和安装检测 make , make install make test 例 ...

  7. linux(ubuntu)系统下Top命令详解

    参考链接: 1. https://www.cnblogs.com/niuben/p/12017242.html 2. https://blog.csdn.net/qq_39416311/article ...

  8. 将windows c盘安装在linux,将WindowsC盘hda1安装在Linux文件系统的/winsys目录下,命令是()。...

    _ 什么叫做可再生能源?什么叫做不可再生能源? 井筒施工时,应及时观测()等变化情况.当发现影响施工的不利地质因素时,应及时提供补充地质资料. PAEI中的A是指() 破伤风症状出现的顺序是() 下面 ...

  9. 计算机命令秒退,Win10专业版下ping命令闪退自动关闭的解决办法

    Ping是Windows.Unix和Linux系统下的一个命令.ping也属于一个通信协议,是TCP/IP协议的一部分.利用"ping"命令可以检查网络是否连通,可以很好地帮助我们 ...

最新文章

  1. python3.6for循环_使用parser_args值输入for循环(python3.6)
  2. java基础----Base64算法的使用
  3. 计算机组成原理 控制冒险,电子科大-系统结构实验-解决控制冒险.docx
  4. c# 中重载WndProc,实现重写“最小化”自定义功能的方法
  5. java string返回_Java的String字符串内容总结
  6. CCF认证训练行动路线图
  7. java freemarker_Java: FreeMarker的配置和使用
  8. net安装 0x80096004 无法验证证书的签名_如何购买iOS签名证书
  9. IdentityServer4学习及简单使用
  10. 使用决策树算法对Iris数据构建决策树
  11. 怎么用视频做gif动图?手把手教你制作gif表情包
  12. 金莹江苏省计算机学会教授,第二届江苏省青年计算机精英论坛”在江南大学举行...
  13. 2篇SCI二区+3篇一类论文认定A档博士!享110万房补!直接副教授、甚至教授待遇,30万科启
  14. 在Markdown编辑器中输入上标下标
  15. Spire.XLS使用教程:在Java中将 Excel 转换为 CSV或将CSV转换为Excel
  16. 华为交换机基础学习命令(ensp)
  17. docker部署环境
  18. 搭建微信小游戏开发环境总结
  19. 第六章 Cesium学习入门之添加Geojson数据(dataSource)
  20. 井通区块链数据上链介绍

热门文章

  1. Tun/Tap接口教材-[翻译:Tun/Tap interface tutorial]
  2. python无限循环语句的代码_如何在Python中实现非阻塞无限循环
  3. php 生成等比例缩略图,PHP实现原比例生成缩略图的方法
  4. word2vec相似度计算_AAAI-2016 | 使用孪生递归网络的句子语义相似度计算方法
  5. shadow阴影属性
  6. python之sys库
  7. python构建字典查大写英文字母ascii编码_python – 字典中ISO短代码的国家名称,如何处理非ascii字符...
  8. 黑莓桌面管理器4.2_虚拟桌面管理器行业现状调研分析及发展趋势预测报告(2020)...
  9. ncnn arm linux,arm ncnn
  10. mysql invalid default value_mysql5.x升级到5.7 导入数据出错,提示Invalid default value for...