linux系统find命令


参考:

Linux下find命令详解[1]
find命令使用详解及31个实用案例

find命令格式:

find path -option 【 -print 】 【 -exec -ok |xargs |grep 】 【 command {} ; 】

find命令的参数:

1)path:要查找的目录路径。

  ~ 表示$HOME目录
   . 表示当前目录
   / 表示根目录 

2)print:表示将结果输出到标准输出。

3)exec:对匹配的文件执行该参数所给出的shell命令。
形式为command {} ;,注意{}与;之间有空格

4)ok:与exec作用相同,
区别在于,在执行命令之前,都会给出提示,让用户确认是否执行

5)|xargs 与exec作用相同 ,起承接作用

区别在于 |xargs 主要用于承接删除操作 ,而 -exec 都可用 如复制、移动、重命名等

6)options :表示查找方式
options常用的有下选项:

-name filename #查找名为filename的文件
-perm #按执行权限来查找
-user username #按文件属主来查找
-group groupname #按组来查找
-mtime -n +n #按文件更改时间来查找文件,-n指n天以内,+n指n天以前
-atime -n +n #按文件访问时间来查找文件,-n指n天以内,+n指n天以前
-ctime -n +n #按文件创建时间来查找文件,-n指n天以内,+n指n天以前
-nogroup #查无有效属组的文件,即文件的属组在/etc/groups中不存在
-nouser #查无有效属主的文件,即文件的属主在/etc/passwd中不存
-type b/d/c/p/l/f #查是块设备、目录、字符设备、管道、符号链接、普通文件
-size n[c] #查长度为n块[或n字节]的文件
-mount #查文件时不跨越文件系统mount点
-follow #如果遇到符号链接文件,就跟踪链接所指的文件
-prune #忽略某个目录

常用参数

1.name:指定文件名

在当前目录及子目录中,查找大写字母开头的txt文件

$ find . -name '[A-Z]*.txt'  

在当前目录及子目录中,查找不是out开头的txt文件   

$ find . -name "out*" -prune -o -name "*.txt"

2. perm:指定文件权限

找到所有644权限的文件

find / -perm 644

3.type:指定文件类型

在当前目录及子目录下,查找符号链接文件   

$ find . -type l -print

在当前目录及子目录下,查找一般文件(f),目录(d)

4.user:指定用户,group:指定用户组

find /etc -user root
find /etc -group root

5.-path,-prune

在当前目录除aa之外的子目录内搜索 txt文件   

$ find . -path "./aa" -prune -o -name "*.txt"

在除dir0、dir1及子目录以外的目录下查找txt后缀文件[2]

find ./ \( -path './dir0*' -o -path './dir1*' \) -a -prune -o -name *.txt

由于命令行不能直接使用圆括号,所以需要用反斜杠''进行转义
在dir0、dir1及子目录下查找txt后缀文件

find ./ ( -path './dir0' -o -path './dir1' ) -a -name *.txt

在所有以名为dir_general的目录下查找txt后缀文件

find ./ -path '/dir_general/' -name *.txt -print

6.size:指定文件大小

找到大于100M的文件(+100M:>100M,-100M:<100M)

find / -size +100M

7.mtime: (modify time)指文件修改时间(天)

找到文件修改时间一天以上的

find / -mtime +1

8.atime:(access time)指定文件访问时间(天)

找到访问时间1天以上的

find / -atime +1

9.ctime:(create time)指定创建时间(天)

指定文件创建时间一天以上

find / -ctime +1

10.exec,ok: 执行命令以及xargs

删除无属主的文件

find / -nouser -exec rm -rf {} ;
find / -nouser | xargs rm -rf

使用-ok,会对每个要执行的命令进行提示
查询当天修改过的文件

find ./ -mtime -1 -type f -exec ls -l {} ;

31个实例[3]

  1. 用文件名查找文件
  2. 用文件名查找文件,忽略大小写
  3. 使用mindepth和maxdepth限定搜索指定目录的深度
  4. 在find命令查找到的文件上执行命令
  5. 相反匹配
  6. 使用inode编号查找文件
  7. 根据文件权限查找文件
  8. 找到home目录及子目录下所有的空文件(0字节文件)
  9. 查找5个最大的文件
  10. 查找5个最小的文件
  11. 使用-type查找指定文件类型的文件
  12. 通过和其他文件比较修改时间查找文件
  13. 通过文件大小查找文件
  14. 给常用find操作取别名
  15. 用find命令删除大型打包文件
  16. 找到在1个小时内被更改的文件
  17. 找到1个小时内被访问过的文件
  18. 查找一个小时内状态被改变的文件
  19. 搜索仅仅限定于文件,不显示文件夹
  20. 仅仅查找非隐藏的文件(不显示隐藏文件)
  21. 查找文件修改时间在某一文件修改后的文件
  22. 查找文件访问时间在某一文件的修改时间之后的文件
  23. 查找状态改变时间在某个文件修改时间之后的文件:
  24. 在find命令输出上使用 ls -l,列举出1小时内被编辑过的文件的详细信息
  25. 仅仅在当前文件系统中搜索
  26. 在同一个命令中使用多个{}
  27. 使用多个{}实例
  28. 将错误重定向到/dev/nul
  29. 将文件名中的空格换成下划线
  30. 在find结果中同时执行两条命令
    31、常用指令

[1]:版权声明:本文为CSDN博主「-纸短情长」的原创文章,遵循CC 4.0 by-sa版权协议,转载请附上原文出处链接及本声明。原文链接:https://blog.csdn.net/l_liangkk/article/details/81294260
[2]:Linux中find命令-path -prune用法详解:https://www.cnblogs.com/wangkangluo1/archive/2012/09/06/2673030.html
3:find命令使用详解及31个实用案例:https://blog.csdn.net/ustc_zn/article/details/78834340