zoukankan      html  css  js  c++  java
  • Linux-鸟菜-6-文件搜索

    Linux-鸟菜-6-文件搜索

    which(寻找[执行档])


    alian ..............这个后面显示的是别名

    没有找到history是因为which是根据PATH环境变阿玲去搜索执行文件的名的。

     

    whereis (由一些热定的目录中找文件文件名)



        上面,which找执行文件,默认whereis列出所有文件(二进制和非二进制),-b就可以找二进制执行文件了。

     

    whichwhereis快是因为他们并不是遍历所有的文件夹,而只是查询一些固定好的目录。所以相比find遍历所有来说会快很多。


    locate/updatedb


    ..我系统是英文的,在网上找个中文的来:



        locate的速度也贼快,但是他并不是因为和whichwhereis一样因为只搜索制定目录才快,他快是因为它搜索的是数据库,数据文件的”镜像”存在了数据库里,不用去真正遍历文件夹去搜索数据,所以快,同时这也就带来了一个问题就是数据库更新问题,可以手动更新,updatedb来更新下,如果不手动更新系统会定时自动更新,比如一天更新一次。所以通常自己马上建立一个文件,直接去搜索并不能搜到,需要手动更新一次再搜。这个问题需要留意。


    find

    最后是说最慢最屌的find命令,这个命令慢是因为它真正发的去遍历并且查找所有相关。屌是以因为条件可以设置的很细,如名字,类型,用户,时间等等。

    帮助命令


    find名字/权限/过滤路径



    Find 用户组/用户名/时间



    查找更改时间比文件file1新但比文件file2旧的文件  -newer file1 ! file2

       说明: find -newer file1 !file2

     

    查找某一类型的文件 -type 

    说明:

    类型文件: 

    b - 块设备文件。 

    d - 目录。 

    c - 字符设备文件。 

    p - 管道文件。 

    l - 符号链接文件。 

    f - 普通文件。 

    find /etc -type d print /etc目录下查找所有的目录 

    find . ! -type d print 在当前目录下查找除目录以外的所有类型的文件 

    find /etc -type l print /etc目录下查找所有的符号链接文件

     

    以文件大小来查找 -size n

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

    说明:

    find . -size +1000000c print 在当前目录下查找文件长度大于1 M字节的文件 

    find . -size 100c print 在当前目录下查找文件长度恰好为100字节的文件 

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


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

    说明:

    find . -name "*.sh" -mount print 从当前目录开始查找位于本文件系统中文件名以sh结尾的文件(不进入其他文件系统)

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

    在当前目录及所有子目录中查找filename(忽略大小写)

    # find -iname "filename"

    在根目录分级查找

    查找根目录和根目录的和只展开一级的子目录中查找

    $find -maxdepth 2 -name passwd 

    在根目录和根目录下展开两级查找passwd文件

    $find / -maxdepth 3 -name passwd

    在根目录的第二级和第四级之间查找

    $ find -mindepth 3 -maxdepth 5 -name passwd

     

    findexec一起使用

    在当前目录下查找文件,并使用exec执行ls -l命令

    find .  -type f -exec ls -l {} ;  

    查找并删除dir1目录下更改时间小于一天的文件

    find dir1 -type f -mtime -1 -exec rm {} ; 

    查找并删除dir1目录下更改时间小于一天的文件,删除时提示是否删除  删除  n不删除

    find dir2 -name "*.txt" -mtime -1 -ok rm {} ; 

     

    findxargs一起使用

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

    #查找系统中的每一个普通文件,然后使用xargs命令来测试它们分别属于哪类文件:

    find . -type f -print | xargs file  

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

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

    #grep命令在所有的普通文件中搜索wirelessqa这个词

    find . -type f -print | xargs grep "wirelessqa"  

    #/bixiaopeng/apps目录下查找所有用户具有读、写和执行权限的文件,并收回相应的写权限:

    find /bixiaopeng/apps  -perm -7 -print | xargs chmod o -w 

     

    #删除3天以前的所有东西 (find . -ctime +3 -exec rm -rf {} ;

    find ./ -mtime +3 -print|xargs rm -f r  

    #删除文件大小为零的文件

    find . -size 0 | xargs rm -f &

  • 相关阅读:
    base.View.OpenParameter.CreateFrom打开历史单据的值是default
    创建日期时间大于启动日期时间
    下拉列表不显示空白选项的原因
    复制、下推、选单时计算类的实体服务规则不会执行
    选单返回数据以后会执行的事件方法
    判断单据体是否录入行
    供应商协同平台
    .net core获取运行时文件绝对路径
    gmock函数参数输出 备忘录
    リバース 終章
  • 原文地址:https://www.cnblogs.com/csnd/p/12061947.html
Copyright © 2011-2022 走看看