• Find命令 查找文件 相当于搜索,搜索文件


    语法:

    find path experssion [action]

    find :关键字 path:路径 e.g . 表示当前路径 expression:按照查询条件查询 e.g -name 按照名字查询 -size按照文件大小查询 -perm 按照权限查询 -type 按照文件类型查询 -user 按照拥有者级别查询 action :处理将查询到的内容 e.g rm 删除查询到的内容

    文件类型:
    b:块设备文档

            d:目录

            c:字符设备文档

            P:管道文档

            l:符号链接文档

            f:普通文档

    find path experssion [action]  

    查找当前目录下以A开头的所有文件和目录

    find A* 
    

    查找当前文件下以data开头的文件夹

    find . -name data*
    

    查找当前文件下名为data的文件夹

    find . -name data
    

    在当前按照修改时间进行查询,查询条件是修改文件时间正好是10天并且输出

    find . -mtime 10 -print

    如果数字前面加-表示小于10天,加+表示大于10天

    在当前按照用户级别,按照文件大小查询.查询条件是用户是超级管理员并且文件大小是大于400并且输出.

    find . -size 0 -size +400 -print
    

    在家目录查找权限是777的文件,将查询到的文件内容(路径)重定向到holes文件中.

    find ~ -perm 777 > ~/holes

    删除当前路径下文件类型是普通文件,并且访问时间大于365天的文件

    find . -type f -atime +365 -exec rm {};

    将查询到的文件交给exec后面的rm命令执行删除.删除的内容位于{}中.exec的命令必须以;结束.需要在;之前加作为转义字符
    如果删除的是目录,需要使用rm -r {} ;
    需要注意 exec这个命令是一个一个读取文件执行操作和直接构建rm -r 不同,rm -r删除目录时是直接将目录删除
      

    -exec 参数

    后面跟的是command命令,它的终止是以;为结束标志的,所以这句命令后面的分号是不可缺少的,考虑到各个系统中分号会有不同的意义,所以前面加反斜杠。
    
    {} 花括号代表前面find查找出来的文件名

    之所以能用到这个命令,关键是由于很多命令不支持|管道来传递参数,而日常工作中有有这个必要,所以就有了xargs命令,例如:

    xargs命令

    find . -type f | rm 这个命令是错误的
    
    find . -type f | xargs rm 这样才是正确的
    
    xargs:让一些命令支持管道操作,本身并没有意义.

    高级

    find . -name "*.html" -print | xargs perl -p -i.bak -e “s/Copyright 2004/Copyright 2005/g;”按照名字查询所有文件以.html 结尾的,将查询到的文件交给perl处理.
    
    perl执行替换操作,替换同时先以.bak执行备份,备份完的数据在进行替换,按照-e根据给定的内容执行,将所有的Copyright 2004替换成Copyright 2005。
    
    “find: 路径必须在表达式之前”的错误提示
    
    使用转义符把*转义,即 *.jpg
    
    用引号引起来 ,即 “*.jpg”
    
    注意:
    
    perl命令后面的参数 -p -i -e必须同时出现,才能修改,备份成功
    
    如果没有备份,修改只是显示成功,但是并没有真正写入到文件中
    

      

    perl:替换

    如果你不想备份,就直接写成 perl -p -e 或者更简单 perl -pe
    
    -e:执行制定的脚本
    
    -i<扩展名>:原地替换文件,并将旧文件用指定的扩展名备份。不指定扩展名则不备份
    
    -p:自动循环+自动输出
    
    perl命令中-p -e -i必须联合使用才能产生效
    
     
    

      

    查找当前文件下及其子目录下所有文件名包含CRED的,并且文件大小超过1k并且文件类型为f的文件、

    1. find -L . - type f -size +1k -name CRED
    -L为依次查找并排序
    
    2.find . -name CRED -size +1k -typef
    

      

  • 相关阅读:
    qt creator配置qt versions: 使用从别处拷贝来的qt库时遇到的问题
    linux显示bmp图像
    gcc预处理、编译、汇编、链接
    佛山照明选股思路
    公共函数瑜伽
    函数防抖和节流*(性能优化不错的选择)
    阮一峰的网络日志有感2(面向对象编程)
    阮一峰的网络日志有感
    项目遇到的问题总结(四):单页面首屏加载慢解决方案
    项目遇到的问题总结(三):数组里面的对象重复了,要去重;reduce去重
  • 原文地址:https://www.cnblogs.com/joanna123/p/12153311.html
Copyright © 2020-2023  润新知