• shell脚本--文件查找之find命令


    首先是通过文件名称来查找,需要使用一个-name参数。

    查询以  .txt结尾的文件,和以 t 开头的文件

    ubuntu@ubuntu:~/test$ ls
    one.txt  three.txt  two.txt
    ubuntu@ubuntu:~/test$ find ./ -name '*.txt'
    ./two.txt
    ./one.txt
    ./three.txt
    ubuntu@ubuntu:~/test$ find ./ -name 't*'
    ./two.txt
    ./three.txt
    

      其中  ./ 表示当前目录,后面还可以跟上一些简单的正则表达式,如下面的例子,注意此时正则表达式需要使用引号括起来。

    ubuntu@ubuntu:~/test$ touch 123.txt
    ubuntu@ubuntu:~/test$ find ./ -name '[a-z]'*    #以一个字母开头的文件
    ./two.txt
    ./one.txt
    ./three.txt
    ubuntu@ubuntu:~/test$ find ./ -name '[1-9]'*    #以一个数字1-9开头的文件
    ./123.txt
    ubuntu@ubuntu:~/test$ 
    

      

    可以通过权限值来查找,此时要使用-perm 参数

    ubuntu@ubuntu:~/test$ ls -l
    total 0
    -rw-rw-r-- 1 ubuntu ubuntu 0 1月  20 21:24 123.txt
    -rw-rw-r-- 1 ubuntu ubuntu 0 1月  20 21:18 one.txt
    -rw-rw-r-- 1 ubuntu ubuntu 0 1月  20 21:18 three.txt
    -rw-rw-r-- 1 ubuntu ubuntu 0 1月  20 21:18 two.txt
    ubuntu@ubuntu:~/test$ chmod 777 one.txt
    ubuntu@ubuntu:~/test$ find -perm 777
    ./one.txt
    ubuntu@ubuntu:~/test$ find -perm 664
    ./two.txt
    ./three.txt
    ./123.txt
    ubuntu@ubuntu:~/test$ 
    

      

    还可以通过文件类型来查找,使用-type参数,其中f表示文件,d表示目录

    ubuntu@ubuntu:~/test$ mkdir dirOne
    ubuntu@ubuntu:~/test$ ls -l
    total 4
    -rw-rw-r-- 1 ubuntu ubuntu    0 1月  20 21:24 123.txt
    drwxrwxr-x 2 ubuntu ubuntu 4096 1月  20 21:37 dirOne
    -rwxrwxrwx 1 ubuntu ubuntu    0 1月  20 21:18 one.txt
    -rw-rw-r-- 1 ubuntu ubuntu    0 1月  20 21:18 three.txt
    -rw-rw-r-- 1 ubuntu ubuntu    0 1月  20 21:18 two.txt
    ubuntu@ubuntu:~/test$ find ./ -type f
    ./two.txt
    ./one.txt
    ./three.txt
    ./123.txt
    ubuntu@ubuntu:~/test$ find ./ -type d
    ./
    ./dirOne
    ubuntu@ubuntu:~/test$ 
    

      

    可以根据文件创建者查找,使用-user参数

    ubuntu@ubuntu:~/test$ ls -l
    total 4
    -rw-rw-r-- 1 ubuntu ubuntu    0 1月  20 21:24 123.txt
    drwxrwxr-x 2 ubuntu ubuntu 4096 1月  20 21:37 dirOne
    -rwxrwxrwx 1 ubuntu ubuntu    0 1月  20 21:18 one.txt
    -rw-r--r-- 1 root   root      0 1月  20 21:42 RootTouch
    -rw-rw-r-- 1 ubuntu ubuntu    0 1月  20 21:18 three.txt
    -rw-rw-r-- 1 ubuntu ubuntu    0 1月  20 21:18 two.txt
    ubuntu@ubuntu:~/test$ find -user root
    ./RootTouch
    ubuntu@ubuntu:~/test$ find -user ubuntu
    .
    ./two.txt
    ./one.txt
    ./three.txt
    ./123.txt
    ./dirOne
    ubuntu@ubuntu:~/test$ 
    

      

    可以根据文件更改时间来查找,使用-mtime参数。 

    find ./ -mtime -5   #查找当前目录下,5天以内更改过的文件或者目录
    find ./ -mtime +3    #查找当前目录下,最后一次更改时间在3天以前的文件
    

      

    根据文件大小来查找,使用-size参数。注意如果要是用文件区间,则每一个文件大小的前面都要加上-size参数,和mtime类似。还要注意的是,1兆字节使用1M,不要使用1m

    ubuntu@ubuntu:~/test$ ls -l
    total 8
    -rw-rw-r-- 1 ubuntu ubuntu    0 1月  20 21:24 123.txt
    drwxrwxr-x 2 ubuntu ubuntu 4096 1月  20 21:37 dirOne
    -rwxrwxrwx 1 ubuntu ubuntu   15 1月  20 22:01 one.txt
    -rw-r--r-- 1 root   root      0 1月  20 21:42 RootTouch
    -rw-rw-r-- 1 ubuntu ubuntu    0 1月  20 21:18 three.txt
    -rw-rw-r-- 1 ubuntu ubuntu    0 1月  20 21:18 two.txt
    ubuntu@ubuntu:~/test$ find ./ -size -10c   #小于10字节的文件
    ./two.txt
    ./RootTouch
    ./three.txt
    ./123.txt
    ubuntu@ubuntu:~/test$ find ./ -size +10c -size -20c   #小于20字节,大于10字节的文件
    ./one.txt
    ubuntu@ubuntu:~/test$ 
    

      

    find的这些参数是可以配合使用的,还可以使用xargs命令配合使用,将结果作为xargs后面命令的输入。

  • 相关阅读:
    软工实践练习一——使用Git进行代码管理心得
    作业1.3——Android平台的开发环境的发展演变
    作业1.2——软件工程的实践项目的自我目标
    SVN冲突解决
    sea.js及三种加载方式的异同
    php中AJAX请求中使用post和get请求的区别
    Vue-起步篇:Vue与React、 Angular的区别
    页面常见布局以及实现方法--flex
    requestAnimationFrame之缓动的应用
    bootstrap中table页面做省市区级联效果(级联库见前面级联编辑)(非select下拉框)
  • 原文地址:https://www.cnblogs.com/-beyond/p/8322161.html
Copyright © 2020-2023  润新知