Linux find 命令

  1. man find

  2. 查找当前目录下所有.jpg文件:

    find . -name "*.jpg" -type f
    

注1: 可以使用Shell Pattern with * ? [ ] 注2: -type 的选项是f d l 等 注3: 可以用 -iname 代替 -name 以去除大小写敏感问题 注3: 当前目录 . 可以省略

  1. 查找home目录下大于100M的文件
    find ~ -type f -size +100M
    

注:+n -n n 分别表示大于n,小于n,等于n

  1. 查找当前目录24小时内改动过的py文件
    find -name "*.py" -ctime -1
    

注1: -atime 为访问时间 注2: -cmin -amin 为以分钟计算的时间 注3: 相关参数还有 -anewer file -cnewer file (查找比file查改时间更新的) 注4: 还有两个参数是 -mtime -mmin

  1. 查找当前目录下所有的隐藏(普遍)文件
    find -regex ".*\/\.[^/]*" -type f
    

注:可以 -iregex 来去除大小写敏感

  1. 查找空文件(夹)

    find -empty
    

  2. 查找用户mitnk所属的所有文件

    find -user mitnk
    

  3. 查找当前目录中以及一级子目录中的py文件

    find -name "*.py" -maxdepth 2
    

注: 还有一个相关参数为 -mindepth

  1. 查找名字不以txt结尾的文件

    find -not -name "*txt"
    
    find ! -name "*txt"
    

  2. 查找当前目录下带a或b的文件

    find . -name "*a*" -or -name "*b*"
    

  3. 查找当前目录下除.svn子目录以外的所有文件

    find . -path "*.svn" -prune -o -print
    

  4. 查找权限是755的文件

    find . -perm 755
    

  5. 输出当前目录下所有txt文件的内容

    find . -type f -name "*.txt" -exec cat {} \;
    
    find . -type f -name "*.txt" | xargs cat
    

  6. 只搜索最小深度为3,最大尝试为5的所有文件夹 ( -maxdepth参数需要放在最前面 )

    find . -mindepth 3 -maxdepth 5 -type d
    

Comments on old posts like this are closed.