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.查询当天修改过的文件

[[email protected] class]# find   ./   -mtime   -1   -type f   -exec   ls -l   {} \;

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

[[email protected] 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
        [[email protected] class]# find   ./   -mtime   -1   -type f   -ok   ls -l   {} \;  
        < ls … ./classDB.inc.php > ? n
        [[email protected] 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"

时间: 2024-08-13 22:06:07

Linux下find命令详解的相关文章

(转)Linux下PS命令详解

(转)Linux下PS命令详解 整理自:http://blog.chinaunix.net/space.php?uid=20564848&do=blog&id=74654 要对系统中进程进行监测控制,查看状态,内存,CPU的使用情况,使用命令:/bin/ps (1) ps :是显示瞬间进程的状态,并不动态连续: (2) top:如果想对进程运行时间监控,应该用 top 命令: (3) kill 用于杀死进程或者给进程发送信号: (4) 查看文章最后的man手册,可以查看ps的每项输出的含义

Linux下chkconfig命令详解

Linux下chkconfig命令详解 chkconfig命令主要用来更新(启动或停止)和查询系统服务的运行级信息.谨记chkconfig不是立即自动禁止或激活一个服务,它只是简单的改变了符号连接. 使用语法:chkconfig [--add][--del][--list][系统服务] 或 chkconfig [--level <等级代号>][系统服务][on/off/reset] chkconfig在没有参数运行时,显示用法.如果加上服务名,那么就检查这个服务是否在当前运行级启动.如果是,返

转载的 Linux下chkconfig命令详解

Linux下chkconfig命令详解 chkconfig命令主要用来更新(启动或停止)和查询系统服务的运行级信息.谨记chkconfig不是立即自动禁止或激活一个服务,它只是简单的改变了符号连接. 使用语法: chkconfig [--add][--del][--list][系统服务] 或 chkconfig [--level <等级代号>][系统服务][on/off/reset] chkconfig 在没有参数运行时,显示用法.如果加上服务名,那么就检查这个服务是否在当前运行级启动.如果是

linux下scp命令详解

scp是 secure copy的缩写, scp是linux系统下基于ssh登陆进行安全的远程文件拷贝命令.linux的scp命令可以在linux服务器之间复制文件和目录. scp命令的用处: scp在网络上不同的主机之间复制文件,它使用ssh安全协议传输数据,具有和ssh一样的验证机制,从而安全的远程拷贝文件. scp命令基本格式: scp [-1246BCpqrv] [-c cipher] [-F ssh_config] [-i identity_file] [-l limit] [-o s

Linux下ps命令详解 Linux下ps命令的详细使用方法

Linux下ps命令详解 1. 运行(正在运行或在运行队列中等待) 2. 中断(休眠中, 受阻, 在等待某个条件的形成或接受到信号) 3. 不可中断(收到信号不唤醒和不可运行, 进程必须等待直到有中断发生)4. 僵死(进程已终止, 但进程描述符存在, 直到父进程调用wait4()系统调用后释放)5. 停止(进程收到SIGSTOP, SIGSTP, SIGTIN, SIGTOU信号后停止运行运行)ps工具标识进程的5种状态码:D 不可中断 uninterruptible sleep (usuall

linux下alias命令详解

linux下alias命令详解 用途说明 设置命令的别名.在linux系统中如果命令太长又不符合用户的习惯,那么我们可以为它指定一个别名.虽然可以为命令建立"链接" 解决长文件名的问题,但对于带命令行参数的命令,链接就无能为力了.而指定别名则可以解决此类所有问题[1].常用别名来简化 ssh登录[见示例三],使长命令变短,使常用的长命令行变短,强制执行命令时询问等. 功能说明 :设置指令的别名. 语 法:alias[别名]=[指令名称] 参 数 : 若不加任何参数,则列出目前所有的别名

linux下tar命令详解

 linux下tar命令详解  tar是Linux环境下最常用的备份工具之一.tar(tap archive)原意为操作磁带文件,但基于Linux的文件操作机制,同样也可适用于普通的磁盘文件.tar可用于建立.还原.查看.管理文件,也可方 便的追加新文件到备份文件中,或仅更新部分的备份文件,以及解压.删除指定的文件.熟悉其常用参数,能方便日常的系统管理工作. 一.版本 还是那句,不同的操作系统,tar的命令参数是有点区别的: 引用 # tar --version tar (GNU tar) 1.

linux下tree命令详解

1.description方法是NSObject自带的方法,包括类方法和对象方法 + (NSString *)description; // 默认返回 类名 - (NSString *)description; // 默认返回 <类名:内存地址> 2.默认情况下利用NSLog和%@输出对象的时返回的就是类名和内存地址 3.修改NSLog和%@的默认输出:重写类对象或者实例对象的description方法即可.因为NSLog函数进行打印的时候会自动调用description方法 /*******

Linux下chkconfig命令详解(转)

Linux下chkconfig命令详解 chkconfig命令主要用来更新(启动或停止)和查询系统服务的运行级信息.谨记chkconfig不是立即自动禁止或激活一个服务,它只是简单的改变了符号连接. 使用语法:chkconfig [--add][--del][--list][系统服务] 或 chkconfig [--level <等级代号>][系统服务][on/off/reset] chkconfig在没有参数运行时,显示用法.如果加上服务名,那么就检查这个服务是否在当前运行级启动.如果是,返

Linux下history命令详解---转载

Linux下History命令主要用于显示历史指令记录内容, 下达历史纪录中的指令 . >History命令语法:[[email protected]]# history [n][[email protected]]# history [-c][[email protected]]# history [-raw] histfiles 参数:n  :数字,要列出最近的 n 笔命令列表-c :将目前的shell中的所有 history 内容全部消除-a :将目前新增的history 指令新增入 hi