Tag: find

  • find命令

    linux里最重要的命令之一,可使用的选项之多令人无法记住,还好可以用man find来查询,下面以例子来学习,掌握最基础的先

    查找文件名为foobar

    find -name "foobar"

    查找不同文件后缀, 用 -o 连接

    find . -name "*.tf" -o -name "*.hcl" -exec cat {} \;

    不区分大小写查找 foobar

    find -iname "foobar"

    从 / 查找文件并限制查找的深度

    find / -maxdepth 2 -name passwd

    查找并计算 md5sum 值,后面参数不能省略

    find -iname "MyCprogram.c" -exec md5sum {} \;
    find -iname "MyCprogram.c" -exec md5sum {} +

    查到不包含某字符串的文件(反查)

    find -maxdepth 1 -not -iname "MyCProgram.c"

    根据 inode number 查找文件

    ls -li *
    find ./ -inum 17735

    对于乱码文件根据 inum 查找并删除

    find ./ -inum 17744 -exec rm {} +

    查找等于10KB的文件:

    find . -size 10k

    查找大于100KB的文件:

    find . -type f -size +100k
    查找大于100MB的文件:
    find . -type f -size +100M
    查找大于1GB的文件:
    find . -type f -size +1G

    查找空文件 并删除

    find ~ -empty
    find /path/to/dir -empty -type f -delete
    

    查找空目录 并删除

    find ~ -empty -type d
    find /path/to/dir -empty -type d -delete
    

    查找home目录中的所有文件

    find $HOME -print
    或
    find ~ -print

    查找当前目录中权限是644的文件

    find . -type f -perm 644 -exec ls -l {} \;

    查找系统中所有文件长度为0的普通文件,并列出它们的完整路径

    find / -type f -size 0 -exec ls -l {} \;

    查找/var/log/目录中更改时间在7日以前的普通文件(即保留最近7天的),并在删除之前询问

    find /var/log/ -type f -mtime +7 -ok rm {} \;

    查找/var/log目录中访问时间在7天以内的文件

    find /var/log/ -type f -mtime -7

    查找比某个文件更新的文件

    find -newer filename

    查找/var/log目录中messages.*.gz文件

    find /var/log/ -name "messages.*.gz"

    查找当前目录下,属组是root的文件

    find . -group root -exec ls -l {} \;

    对当前目录(包含子目录)进行排序

    find . -type d | sort

    与其他命令结合统计代码量

    find ./ -name '*' | xargs wc -l

    做一些漂亮的 alias 删除程序生成的临时文件或某种类型文件

    alias rmao="find . -iname a.out -exec rm {} \;"
    alias rm100m="find / -type f -name *.tar -size +100M -exec rm -i {} \;"
    alias rm1g="find / -type f -name *.tar -size +1G -exec rm -i {} \;"
    alias rm2g="find / -type f -name *.tar -size +2G -exec rm -i {} \;"
    alias rm5g="find / -type f -name *.tar -size +5G -exec rm -i {} \;"