linux+find参数详解,Linux下find命令详解

【概述】

find命令是Linux中一个很强大的查找命令,用于在目录结构中搜索文件并执行指定操作。只要具有相应的权限,即使系统中含有网络文件系统(NFS),find 命令在该文件系统中同样有效。由于find命令功能强大,常被用来在大文件系统中查找文件,这会话费很长时间,所以人们更倾向于把它放在后台执行。接下来我们看看find命令的具体用法。

【1】命令格式

find pathname -options[-print -exec -ok ...]

find 查找路径 -命令参数

【2】命令功能

find命令用于在文件树中查找文件,并做出相应的处理,这个过程中有可能会访问磁盘

【3】命令参数

pathname:find命令所查找的目录路径

例如用.来表示当前目录,用/来表示系统根目录

-print:find命令将匹配的文件输出到标准输出

-exec:find命令对匹配的文件执行该参数所给出的shell命令

相应命令的形式为'command' { } \;(注意{ }和\之间有空格)

-ok:和-exec的作用相同,只不过以一种更安全的模式来执行该参数所给出的shell命令

在执行每一个命令之前,都会给出提示,让用户来确定是否执行

【4】命令选项

1.根据时间查找文件  -atime/-ctime/-mtime/-newer/-anewer/-used

-atime  -n +n          按文件访问时间来查找文件,-n指n天以内,+n指n 天以前

-ctime  -n +n          按文件创建时间来查找文件,-n指n天以内,+n指n 天以前

-mtime  -n +n         按文件更改时间来查找文件,-n指n天以内,+n指n 天以前

-newer file1 ! file2    查找更改时间比文件file1新但比文 件file2旧的文件

eg.

-amin  -10     // 查找在系统中最后10分钟访问的文件

-amin  +30     // 查找最近30分钟前被存取过的文件

-atime   -2     // 查找在系统中最后48小时访问的文件

-atime  -1     // 查找1天之内被存取过的文件

-mmin   +60      // 查找60分钟前改动过的文件

-mmin  -5     // 查找在系统中最后5分钟里修改过的文件

-mtime  -2      // 查找最近两天内改动过的文件

-mtime  -1     // 查找在系统中最后24小时里修改过的文件

-newer   tmp.txt      // 查找更新时间比tmp.txt近的文件或目录    -anewer   tmp.txt      // 查找存取时间比tmp.txt近的文件或目录

-used  -2     //列出文件或目录被改动过之后,在2日内被存取过的文件或目录

由此可以看出,min是分钟,time是小时,a访问,c改变状态,m改变数据

2.根据文件名查找文件-name

-name   filename       查找名为filename的文件

eg.

-name   "*.txt"     // 查找.txt文件并显示

-name   "[A-Z]*"     // 查找以大写字母开头的文件

-name   "host*"     // 查找以host开头的文件

-name   "[a-z][a-z][0–9][0–9].txt"     // 查找以两个小写字母和两个数字开头的txt文件

-name april*     // 查找以april开始的文件

-name   april*   fprint file     // 查找以april开始的文件,并把结果输出到file中

-name ap* -o -name may*     // 查找以ap或may开头的文件

-name tom.txt   -ftype vfat     // 查找名称为tom.txt且文件系统类型为vfat的文件

-name t.txt ! -ftype vfat     // 查找名称为tom.txt且文件系统类型不为vfat的文件

-name wa* -type l     // 查找名为wa开头且类型为符号链接的文件

3.根据文件权限查找文件    -perm

-perm     按执行权限来查找

eg.

-perm  700     // 查找权限为700的文件或目录

-perm  777     // 查找所有用户都可读写执行的文件

4.根据文件属主查找文件    -user/nouser

-user  username     按文件属主来查找

eg.

find    /   -user    fred     // 查找在系统中属于FRED这个用户的文件

find   /home   -user  cnscn     // 列出/home目录内属于用户cnscn的文件或目录

find   /home   -nouser     // 列出/home内不属于本地用户的文件或目录

5.根据文件所属组查找文件    -group/-nogroup

-group groupname     按文件所属组来查找

eg.

find    /   -group   cat     //  查找在系统中属于 groupcat的文件

find   /home   -group   cnscn     // 列出/home内组为cnscn的文件或目录

find   /home   -nogroup     // 列出/home内不属于本地组的文件或目录

6.根据文件类型查找文件   -tpye

-type    b /d /c /p /l /f /s      查找是块设备、目录、字符设备、管道、符号链接、普通、socket文件

eg.

-type  d     // 查找当前目录下的目录

-type  c     // 查找当前目录下的字符设备文件

-type  l     // 查找当前目录下的符号链接文件

7.根据文件大小查找文件   -size

-size  n[c]     查找长度为n块[或n字节]的文件

eg.

-size   +1000000ct     // 查找长度大于1Mb的文件

-size   100ct     // 查找长度为100c的文件

-size   +10     // 查找长度超过期作废10块的文件(1块=512字节)

-size   +512k     // 查找大于512k的文件

-size   -512k     // 查找小于512k的文件

当然了,find命令也可以和其他的命令一起复合使用,例如:

a.查当前目录下的所有普通文件

# find . -type f -exec ls -l {} \;

b.在/ l o g s目录中查找更改时间在5日以前的文件并删除

$ find logs -type f -mtime +5 -exec   -ok   rm {} \;

c.查询当天修改过的文件

[root@book class]# find   ./   -mtime   -1   -type f   -exec   ls -l   {} \;

d.查询文件并询问是否要显示

[root@book class]# find   ./   -mtime   -1   -type f   -ok   ls -l   {} \;          < ls … ./classDB.inc.php > ? y        -rw-r–r–    1 cnscn    cnscn       13709   1月 12 12:22 ./classDB.inc.php        [root@book class]# find   ./   -mtime   -1   -type f   -ok   ls -l   {} \;          < ls … ./classDB.inc.php > ? n        [root@book class]#

e.比如要查找磁盘中大于3M的文件:

find . -size +3000k -exec ls -ld {} ;

f.将find出来的东西拷到另一个地方

find *.c -exec cp ‘{}’ /tmp ‘;’

g.查找2004-11-30 16:36:37时更改过的文件

# A=`find ./ -name "*php"` |   ls -l –full-time $A 2>/dev/null | grep "2004-11-30 16:36:37"

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
find命令是Linux系统中一个非常强大的用于查找文件和目录的工具。下面是find命令的用法详解。 1. 基本语法: find [path] [expression] - path:指定需要查找的路径,默认为当前目录。 - expression:指定查找时的条件和操作。 2. 表达式: - -name:按照文件名进行匹配,可以使用通配符。 - -type:按照文件类型进行匹配,常见的类型有f(普通文件)、d(目录)、l(符号链接)等。 - -size:按照文件大小进行匹配,可以使用+(大于)、-(小于)和c(字节)、k(千字节)、M(兆字节)等单位。 - -mtime:按照文件的修改时间进行匹配,可以使用+(大于)、-(小于)和n(n天前)等。 - -user:按照文件所属用户进行匹配。 - -group:按照文件所属组进行匹配。 3. 操作: - -print:将匹配的文件或目录显示在标准输出中。 - -exec:对匹配的文件或目录执行后面指定的命令。 - -delete:删除匹配的文件或目录。 4. 常用示例: - 查找当前目录下所有以.txt结尾的文件:find . -name "*.txt" - 查找当前目录下所有大小超过1MB的文件:find . -size +1M - 查找当前目录下所有修改时间在3天以内的文件:find . -mtime -3 - 查找当前目录下所有属于root用户的文件:find . -user root - 查找当前目录下所有属于root组的目录:find . -group root - 找到匹配的文件后打印其路径:find . -name "*.txt" -print 总结:find命令可以根据文件名、类型、大小、修改时间、用户和组等条件来查找文件和目录,并根据需要执行特定的操作。它的灵活性和强大功能使得它成为Linux系统中一个非常重要和实用的命令。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值