Think before you speak, read before you think.

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

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *