find常见用法示例
find path -option [ -print ] [ -exec command ] {} \;
option主要选项如下:
-print:将匹配的文件输出到标准输出
-exec:对匹配的文件执行所给的shell命令。形式为:command { } \;注意{ }和\;之间的空格
-ok:和-exec作用相同。只不过以一种更安全的模式执行该参数所给的shell命令。在执行每个命令之前,都会给出提示,让用户确定是否执行
-name:按照文件名称查找
-perm:按照文件权限查找
-prune:不在当前指定的路径查找。如果同时指定了-depth选项,则prune被忽略
-user:按照文件属主查找
-group:按照文件属组查找
-mtime -n +n:按照文件更改时间查找。-n 指距离现在时间n天以内;+n n天以外
-nogroup:查找无效属组文件
-nouser:查找无效属主文件
-newer file1 !file2:查找更改时间比file1新比file2旧的文件
-type:查找某一类型文件(b:块设备文件d:目录c:字符设备文件P:管道文件l:符号链接文件f:普通文件)
-size n[c]查找文件长度为n块的文件 有[c]表示文件长度以字节计
-inum 根据节点进行搜索
-depth:查找时,首先查找当前目录文件,然后再在其子目录查找
-fstype:查找位于某一类型文件系统中的文件,文件系统类型可在/etc/fstab中找到
-mount:查找文件不跨越文件系统mount点
-follow:如遇到链接文件,则跟踪至链接所指向文件
-cpio:对匹配的文件使用cpio命令,将文件备份到磁带设备中
示例:
通过文件类型查找
find ./ -type f|d|b|c|p|l
通过文件名称查找
find ./ -name test
find ./ -name \*.c
find ./ -iname test #不区分大小写
查找名字符合正则表达式的文件,注意前面的‘.*’(查找到的文件带有目录)
find ./ -regex .*so.*\.gz
查找目录并列出目录下的文件(为找到的每一个目录单独执行ls命令,没有选项-print时文件列表前一行不会显示目录名称)
find ./ -type d -print -exec ls {} \;
查找目录并列出目录下的文件(为找到的每一个目录单独执行ls命令,执行命令前需要确认)
find ./ -type d -ok ls {} \;
查找目录并列出目录下的文件(将找到的目录添加到ls命令后一次执行,参数过长时会分多次执行)
find ./ -type d -exec ls {} +
打印test文件名后,打印test文件的内容
find ./ -name test -print -exec cat {} \;
不打印test文件名,只打印test文件的内容
find ./ -name test -exec cat {} \;
通过时间查找
find ./ -mtime -2 #查找文件更新时间在距现在时刻二天以内的文件
find ./ -mtime +2 #查找文件更新时间在距现在时刻二天以上的文件
find ./ -mtime 2 #查找文件更新时间在距现在时刻一天以上二天以内的文件
find ./ -atime -2 #查找文件访问时间在距现在时刻二天以内的文件
find ./ -atime +2 #查找文件访问时间在距现在时刻二天以上的文件
find ./ -atime 2 #查找文件访问时间在距现在时刻一天以上二天以内的文件
find ./ -mmin -2
find ./ -mmin +2
find ./ -mmin 2
find ./ -newer abc #查找文件更新时间比文件abc的内容更新时间新的文件
find ./ -anewer abc #查找文件访问时间比文件abc的内容更新时间新的文件
文件的 Access time,atime 是在读取文件或者执行文件时更改的。
文件的 Modified time,mtime 是在写入文件时随文件内容的更改而更改的。
文件的 Create time,ctime 是在写入文件、更改所有者、权限或链接设置时随 Inode 的内容更改而更改的
查找空文件或空目录
find ./ -empty
查找空文件并删除
find ./ -empty -type f -print -delete
find ./ -empty -type f -print -exec rm -rf {} \;
find ./ -empty -type f -print -ok rm -rf {} \;
查找权限为644的文件或目录(需完全符合)
find ./ -perm 664
查找用户/组权限为读写,其他用户权限为读(权限超过644就可以,比如744)的文件或目录
find ./ -perm -664
查找用户有写权限或者组用户有写权限的文件或目录
find ./ -perm /220
find ./ -perm /u+w,g+w
find ./ -perm /u=w,g=w
查找所有者权限有读权限的目录或文件
find ./ -perm -u=r
查找用户组权限有读权限的目录或文件
find ./ -perm -g=r
查找其它用户权限有读权限的目录或文件
find ./ -perm -o=r
查找所有者为lzj的文件或目录
find ./ -user lzj
查找组名为gname的文件或目录
find ./ -group gname
查找文件的用户ID不存在的文件
find ./ -nouser
查找文件的组ID不存在的文件
find ./ -nogroup
查找有执行权限但没有可读权限的文件
find ./ -executable \! -readable (!-type 不需要加\)
查找文件size小于10个字节的文件或目录
find ./ -size -10c
查找文件size等于10个字节的文件或目录
find ./ -size 10c
查找文件size大于10个字节的文件或目录
find ./ -size +10c
查找文件size小于10k的文件或目录
find ./ -size -10k
查找文件size小于10M的文件或目录
find ./ -size -10M
查找文件size小于10M,并且大于10k的文件或者目录
find ./ -szie +10k -a -szie -10M
查找文件size小于10G的文件或目录
find ./ -size -10G
根据节点进行搜索
find . -inum 101439158
xargs用法
find . -type f -print |xargs file
在使用find命令的-exec选项处理匹配到的文件时, find命令将所有匹配到的文件一起传递给exec执行。但有些系统对能够传递给exec的命令长度有限制,这样在find命令运行几分钟之后,就会出现溢出错误。错误信息通常是“参数列太长”或“参数列溢出”。这就是xargs命令的用处所在,特别是与find命令一起使用
find命令把匹配到的文件传递给xargs命令,而xargs命令每次只获取一部分文件而不是全部,不像-exec选项那样。这样它可以先处理最先获取的一部分文件,然后是下一批,并如此继续下去
在有些系统中,使用-exec选项会为处理每一个匹配到的文件而发起一个相应的进程,并非将匹配到的文件全部作为参数一次执行;这样在有些情况下就会出现进程过多,系统性能下降的问题,因而效率不高;
而使用xargs命令则只有一个进程。另外,在使用xargs命令时,究竟是一次获取所有的参数,还是分批取得参数,以及每一次获取参数的数目都会根据该命令的选项及系统内核中相应的可调参数来确定
prune用法
如果想查找当前目录(/home/student)下的tmp.txt文件,但是想要避开sep目录:
find /home/student -path /home/student/sep -prune -o -name "tmp.txt" -print
本文详细介绍了Linux下find命令的常见用法及其选项,包括按文件名、权限、大小、时间等条件查找文件。此外还提供了多个实用示例,帮助读者更好地理解和运用find命令。
1万+

被折叠的 条评论
为什么被折叠?



