find命令
linux系统find命令
参考:
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]
- 用文件名查找文件
- 用文件名查找文件,忽略大小写
- 使用mindepth和maxdepth限定搜索指定目录的深度
- 在find命令查找到的文件上执行命令
- 相反匹配
- 使用inode编号查找文件
- 根据文件权限查找文件
- 找到home目录及子目录下所有的空文件(0字节文件)
- 查找5个最大的文件
- 查找5个最小的文件
- 使用-type查找指定文件类型的文件
- 通过和其他文件比较修改时间查找文件
- 通过文件大小查找文件
- 给常用find操作取别名
- 用find命令删除大型打包文件
- 找到在1个小时内被更改的文件
- 找到1个小时内被访问过的文件
- 查找一个小时内状态被改变的文件
- 搜索仅仅限定于文件,不显示文件夹
- 仅仅查找非隐藏的文件(不显示隐藏文件)
- 查找文件修改时间在某一文件修改后的文件
- 查找文件访问时间在某一文件的修改时间之后的文件
- 查找状态改变时间在某个文件修改时间之后的文件:
- 在find命令输出上使用 ls -l,列举出1小时内被编辑过的文件的详细信息
- 仅仅在当前文件系统中搜索
- 在同一个命令中使用多个{}
- 使用多个{}实例
- 将错误重定向到/dev/nul
- 将文件名中的空格换成下划线
- 在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