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 {} \;"
Leave a Reply