• Linux命令之find(二)


    接上一篇Linux命令之find(一)

    (1).实例

      1.列出当前目录下及子目录下所有的.txt文件

    [xf@xuexi ~]$ ls
    1.txt  3.txt  b.txt  公共  视频  文档  音乐
    2.txt  a.txt  c.txt  模板  图片  下载  桌面
    [xf@xuexi ~]$ find . -name "*.txt"
    ]./.cache/tracker/db-version.txt
    ./.cache/tracker/db-locale.txt
    ./.cache/tracker/parser-sha1.txt
    ./.cache/tracker/locale-for-miner-user-guides.txt
    ./.cache/tracker/locale-for-miner-apps.txt
    ./.cache/tracker/last-crawl.txt
    ./.cache/tracker/first-index.txt
    ./1.txt
    ./2.txt
    ./3.txt
    ./a.txt
    ./b.txt
    ./c.txt
    

      2.查找当前用户下更改时间在一天内或一天以上的.txt文件

    [xf@xuexi ~]$ find . -mtime -1 -name "*.txt"  //一天内
    ./.cache/tracker/locale-for-miner-user-guides.txt
    ./.cache/tracker/locale-for-miner-apps.txt
    ./1.txt
    ./2.txt
    ./3.txt
    ./a.txt
    ./b.txt
    ./c.txt
    [xf@xuexi ~]$ stat 1.txt 
      文件:"1.txt"
      大小:0         	块:0          IO 块:4096   普通空文件
    设备:803h/2051d	Inode:52016194    硬链接:1
    权限:(0664/-rw-rw-r--)  Uid:( 1000/      xf)   Gid:( 1000/      xf)
    环境:unconfined_u:object_r:user_home_t:s0
    最近访问:2019-03-04 15:33:04.998746697 +0800
    最近更改:2019-03-04 15:33:04.998746697 +0800
    最近改动:2019-03-04 15:33:04.998746697 +0800
    创建时间:-
    [xf@xuexi ~]$ find . -mtime +1 -name "*.txt"  //一天以上
    ./.cache/tracker/db-version.txt
    ./.cache/tracker/db-locale.txt
    ./.cache/tracker/parser-sha1.txt
    ./.cache/tracker/last-crawl.txt
    ./.cache/tracker/first-index.txt
    [xf@xuexi ~]$ stat ./.cache/tracker/db-version.txt 
      文件:"./.cache/tracker/db-version.txt"
      大小:2         	块:8          IO 块:4096   普通文件
    设备:803h/2051d	Inode:35360       硬链接:1
    权限:(0644/-rw-r--r--)  Uid:( 1000/      xf)   Gid:( 1000/      xf)
    环境:unconfined_u:object_r:cache_home_t:s0
    最近访问:2019-03-04 10:05:12.993515697 +0800
    最近更改:2018-09-06 11:43:45.770953885 +0800
    最近改动:2018-09-06 11:43:45.770953885 +0800
    创建时间:-
    

      3.对查找内容执行相应命令

    exi ~]$ touch {1,2,3}.back
    [xf@xuexi ~]$ find . -name "*.back"
    ./1.back
    ./2.back
    ./3.back
    [xf@xuexi ~]$ find . -name "*.back" -exec ls -l {} ;
    -rw-rw-r--. 1 xf xf 0 3月   4 18:39 ./1.back
    -rw-rw-r--. 1 xf xf 0 3月   4 18:39 ./2.back
    -rw-rw-r--. 1 xf xf 0 3月   4 18:39 ./3.back
    [xf@xuexi ~]$ ls -l ./1.back;ls -l ./2.back;ls -l ./3.back;    //拆分执行
    -rw-rw-r--. 1 xf xf 0 3月   4 18:39 ./1.back
    -rw-rw-r--. 1 xf xf 0 3月   4 18:39 ./2.back
    -rw-rw-r--. 1 xf xf 0 3月   4 18:39 ./3.back
    

      4.与xargs -i联合使用,find的结果值代替其中的{}

    [xf@xuexi ~]$ find . -name "*.back" | xargs -i ls -l {}
    -rw-rw-r--. 1 xf xf 0 3月   4 18:39 ./1.back
    -rw-rw-r--. 1 xf xf 0 3月   4 18:39 ./2.back
    -rw-rw-r--. 1 xf xf 0 3月   4 18:39 ./3.back
    

      5.查找多个类型文件

    [xf@xuexi ~]$ touch a.pdf
    [xf@xuexi ~]$ find . -name "*.back" -o -name "*.pdf"  //-o或者,也可写成-or
    ./1.back
    ./2.back
    ./3.back
    ./a.pdf
    [xf@xuexi ~]$ find . -size +20k -a -size -30k  //-a并且,也可写成-and
    ./.config/pulse/93c68f6a5c7b462db558e8e995b4212a-card-database.tdb
    ./.local/share/evolution/addressbook/system/contacts.db
    

      6.按照权限查找

    [root@xuexi ~]# mkdir aaa
    [root@xuexi ~]# mkdir bbb
    [root@xuexi ~]# touch a.sh
    [root@xuexi ~]# chmod 777 aaa
    [root@xuexi ~]# chmod 1777 bbb
    [root@xuexi ~]# chmod 4777 a.sh
    [root@xuexi ~]# find /root/ -perm 777  //权限为777的所有文件或文件夹
    /root/aaa
    [root@xuexi ~]# find /root/ -perm -777  //权限至少为777的所有文件或文件夹
    /root/aaa
    /root/bbb
    /root/a.sh
    [root@xuexi ~]# find /root -type f -perm -777  //权限至少为777的所有普通文件。-type f指定普通文件
    /root/a.sh

      7.查找目录深度

    [root@xuexi ~]# find /bin -maxdepth 1 -perm -755  //bin后没有/,那么bin为第一层
    /bin
    [root@xuexi ~]# find /bin/ -maxdepth 1 -perm -755  //bin后有/,则下一层为第一层
    /bin/cp
    /bin/lua
    /bin/captoinfo
    /bin/csplit
    /bin/clear
    /bin/cut
    /bin/luac
    /bin/infocmp
    /bin/fmt
    /bin/unxz
    //比较多,只截取部分
    

      8.查找所有属于用户xf的文件,并复制到指定目录

    [root@xuexi ~]# mkdir findresults
    [root@xuexi ~]# ls
    1.txt            core.3160    initial-setup-ks.cfg  模板  图片  下载  桌面
    anaconda-ks.cfg  findresults  公共                  视频  文档  音乐
    [root@xuexi ~]# find / -user xf -exec cp -a {} /root/findresults/ ;
    find: ‘/proc/11379/task/11379/fd/5’: 没有那个文件或目录
    find: ‘/proc/11379/task/11379/fdinfo/5’: 没有那个文件或目录
    find: ‘/proc/11379/fd/6’: 没有那个文件或目录
    find: ‘/proc/11379/fdinfo/6’: 没有那个文件或目录
    cp: 无法以目录"/home/xf" 来覆盖非目录"/root/findresults/xf"
    

      上面的命令是没有问题的,这里涉及到同一目录下文件与文件、文件夹与文件夹,文件与文件夹都不能同名。Windows文件与文件夹能够同名是因为文件有扩展名,否则也不能重名。

      这时我们可以临时修改一下文件名,以便可以继续执行

    [root@xuexi ~]# mv /var/spool/mail/xf /var/spool/mail/xf.mail    //临时修改一下文件名
    [root@xuexi ~]# rm -rf /root/findresults/*    //清空原来的复制文件
    [root@xuexi ~]# find / -user xf -exec cp -a {} /root/findresults/ ;    //重新执行
    find: ‘/proc/12438/task/12438/fd/5’: 没有那个文件或目录
    find: ‘/proc/12438/task/12438/fdinfo/5’: 没有那个文件或目录
    find: ‘/proc/12438/fd/6’: 没有那个文件或目录
    find: ‘/proc/12438/fdinfo/6’: 没有那个文件或目录
    cp: "/root/findresults/.esd-1000" 与"/root/findresults/.esd-1000" 为同一文件
    cp: "/root/findresults/.mozilla" 与"/root/findresults/.mozilla" 为同一文件
    cp: "/root/findresults/.bash_logout" 与"/root/findresults/.bash_logout" 为同一文件
    cp: "/root/findresults/.bash_profile" 与"/root/findresults/.bash_profile" 为同一文件
    cp: "/root/findresults/.bashrc" 与"/root/findresults/.bashrc" 为同一文件
    cp: "/root/findresults/.cache" 与"/root/findresults/.cache" 为同一文件
    cp: "/root/findresults/.changed" 与"/root/findresults/.changed" 为同一文件
    cp: "/root/findresults/.dbus" 与"/root/findresults/.dbus" 为同一文件
    cp: "/root/findresults/.config" 与"/root/findresults/.config" 为同一文件
    cp: "/root/findresults/.ICEauthority" 与"/root/findresults/.ICEauthority" 为同一文件
    cp: "/root/findresults/.local" 与"/root/findresults/.local" 为同一文件
    cp: "/root/findresults/.esd_auth" 与"/root/findresults/.esd_auth" 为同一文件
    cp: "/root/findresults/.bash_history" 与"/root/findresults/.bash_history" 为同一文件
    cp: "/root/findresults/.lesshst" 与"/root/findresults/.lesshst" 为同一文件
    cp: "/root/findresults/.viminfo" 与"/root/findresults/.viminfo" 为同一文件
    [root@xuexi ~]# mv /var/spool/mail/xf.mail /var/spool/mail/xf    //最后再改回来
    [root@xuexi ~]# ls /var/spool/mail/
    root  rpc  xf
    

      

  • 相关阅读:
    【0003】与随机数有关的一些问题
    【0001】排序法与查找方式
    【0002】斐波那契数列,迷宫,汉诺塔
    【0001】C程序的编译过程
    django学习——request.POST.get(‘key’) 、 request.GET.get('key', '')
    django 删除数据库表后重新同步的方法
    Django链接mysql数据库报错1064
    sql练习题
    jmeter连接数据库
    购物车程序练习
  • 原文地址:https://www.cnblogs.com/diantong/p/10471038.html
Copyright © 2020-2023  润新知