`

【转】find命令详解

阅读更多
用法总结如下:
find pathname -options [-print -exec -ok]

pathname:查找路径

-option:主要选项如下:
-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]表示文件长度以字节计
-depth:查找时,首先查找当前目录文件,然后再在其子目录查找
-fstype:查找位于某一类型文件系统中的文件,文件系统类型可在/etc/fstab中找到
-mount:查找文件不跨越文件系统mount点
-follow:如遇到链接文件,则跟踪至链接所指向文件
-cpio:对匹配的文件使用cpio命令,将文件备份到磁带设备中


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

-exec:对匹配的文件执行所给的shell命令。形式为:command { } \;注意{ }和\;之间的空格

-ok:和-exec作用相同。只不过以一种更安全的模式执行该参数所给的shell命令。在执行每个命令之前,都会给出提示,让用户确定是否执行







Linux中find常见用法示例

·find  path  -option  [  -print ]  [ -exec  -ok  command ]  {} \;
#-print 将查找到的文件输出到标准输出
#-exec  command  {} \;     -----将查到的文件执行command操作,{} 和 \;之间有空格
#-ok 和-exec相同,只不过在操作前要询用户

====================================================

-name  filename             #查找名为filename的文件
-perm                       #按执行权限来查找
-user   username            #按文件属主来查找
-group groupname            #按组来查找
-mtime  -n +n               #按文件更改时间来查找文件,-n指n天以内,+n指n天以前
-atime   -n +n              #按文件访问时间来查GIN: 0px">-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中不存
-newer  f1 !f2              找文件,-n指n天以内,+n指n天以前
-ctime   -n +n              #按文件创建时间来查找文件,-n指n天以内,+n指n天以前
-nogroup                    #查无有效属组的文件,即文件的属组在/etc/groups中不存在
-nouser                     #查无有效属主的文件,即文件的属主在/etc/passwd中不存
-newer  f1 !f2              #查更改时间比f1新但比f2旧的文件
-type    b/d/c/p/l/f        #查是块设备、目录、字符设备、管道、符号链接、普通文件
-size     n[c]              #查长度为n块[或n字节]的文件
-depth                      #使查找在进入子目录前先行查找完本目录
-fstype                     #查更改时间比f1新但比f2旧的文件
-type    b/d/c/p/l/f        #查是块设备、目录、字符设备、管道、符号链接、普通文件
-size     n[c]              #查长度为n块[或n字节]的文件
-depth                      #使查找在进入子目录前先行查找完本目录
-fstype                     #查位于某一类型文件系统中的文件,这些文件系统类型通常可 在/etc/fstab中找到
-mount                      #查文件时不跨越文件系统mount点
-follow                     #如果遇到符号链接文件,就跟踪链接所指的文件
-cpio                %;     #查位于某一类型文件系统中的文件,这些文件系统类型通常可 在/etc/fstab中找到
-mount                      #查文件时不跨越文件系统mount点
-follow                     #如果遇到符号链接文件,就跟踪链接所指的文件
-cpio                       #对匹配的文件使用cpio命令,将他们备份到磁带设备中
-prune                      #忽略某个目录

====================================================
$find  ~  -name  "*.txt"  -print    #在$HOME中查.txt文件并显示
$find  .   -name  "*.txt"  -print
$find  .   -name  "[A-Z]*"  -pri26nbsp;   #对匹配的文件使用cpio命令,将他们备份到磁带设备中
-prune                              #忽略某个目录

=====================================================
$find  ~  -name  "*.txt"  -print    #在$HOME中查.txt文件并显示
$find  .   -name  "*.txt"  -print
$find  .   -name  "[A-Z]*"  -print  #查以大写字母开头的文件
$find  /etc  -name  "host*"  -print #查以host开头的文件
$find  .  -name  "[a-z][a-z][0--9][0--9].txt"   -print  #查以两个小写字母和两个数字开头的txt文件
$find .  -perm  755  -print
$find  .  -perm -007  -exec ls -l {} \;  #查所有用户都可读写执行的文件同-perm 777
$find  . -type d  -print
$find  .  !  -type  d  -print
$find  .  -type l  -print

$find  .  -size  +1000000c  -print       #查长度大于1Mb的文件
$find  .  -size  100c        -print      # 查长度为100c的文件
$find  .  -size  +10  -print             #查长度超过期作废10块的文件(1块=512字节)

$cd /
$find  etc  home  apps   -depth  -print  | cpio  -ivcdC65536  -o  /dev/rmt0
$find  /etc -name "passwd*"  -exec grep  "cnscn"  {}  \;  #看是否存在cnscn用户
$find . -name "yao*"  | xargs file
$find  . -name "yao*"  |  xargs  echo   "" > /tmp/core.log
$find  . -name "yao*"  | xargs  chmod  o-w

======================================================

find  -name april*                      在当前目录下查找以april开始的文件
find  -name  april*  fprint file        在当前目录下查找以april开始的文件,并把结果输出到file中
find  -name ap* -o -name may*  查找以ap或may开头的文件
find  /mnt  -name tom.txt  -ftype vfat  在/mnt下查找名称为tom.txt且文件系统类型为vfat的文件
find  /mnt  -name t.txt ! -ftype vfat   在/mnt下查找名称为tom.txt且文件系统类型不为vfat的文件
find  /tmp  -name wa* -type l           在/tmp下查找名为wa开头且类型为符号链接的文件
find  /home  -mtime  -2                 在/home下查最近两天内改动过的文件
find /home   -atime -1                  查1天之内被存取过的文件
find /home -mmin   +60                  在/home下查60分钟前改动过的文件
find /home  -amin  +30                  查最近30分钟前被存取过的文件
find /home  -newer  tmp.txt             在/home下查更新时间比tmp.txt近的文件或目录
find /home  -anewer  tmp.txt            在/home下查存取时间比tmp.txt近的文件或目录
find  /home  -used  -2                  列出文件或目录被改动过之后,在2日内被存取过的文件或目录
find  /home  -user cnscn                列出/home目录内属于用户cnscn的文件或目录
find  /home  -uid  +501                 列出/home目录内用户的识别码大于501的文件或目录
find  /home  -group  cnscn              列出/home内组为cnscn的文件或目录
find  /home  -gid 501                   列出/home内组id为501的文件或目录
find  /home  -nouser                    列出/home内不属于本地用户的文件或目录
find  /home  -nogroup                   列出/home内不属于本地组的文件或目录
find  /home   -name tmp.txt   -maxdepth  4  列出/home内的tmp.txt 查时深度最多为3层
find  /home  -name tmp.txt  -mindepth  3  从第2层开始查
find  /home  -empty                     查找大小为0的文件或空目录
find  /home  -size  +512k               查大于512k的文件
find  /home  -size  -512k               查小于512k的文件
find  /home  -links  +2                 查硬连接数大于2的文件或目录
find  /home  -perm  0700                查权限为700的文件或目录
find  /tmp  -name tmp.txt  -exec cat {} \;
find  /tmp  -name  tmp.txt  -ok  rm {} \;

find   /  -amin   -10       # 查找在系统中最后10分钟访问的文件
find   /  -atime  -2         # 查找在系统中最后48小时访问的文件
find   /  -empty              # 查找在系统中为空的文件或者文件夹
find   /  -group  cat        # 查找在系统中属于 groupcat的文件
find   /  -mmin  -5         # 查找在系统中最后5分钟里修改过的文件
find   /  -mtime  -1        #查找在系统中最后24小时里修改过的文件
find   /  -nouser             #查找在系统中属于作废用户的文件
find   /  -user   fred       #查找在系统中属于FRED这个用户的文件

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

# find . -type f -exec ls -l {} \;
-rw-r--r--    1 root     root        34928 2003-02-25  ./conf/httpd.conf
-rw-r--r--    1 root     root        12959 2003-02-25  ./conf/magic
-rw-r--r--    1 root     root          180 2003-02-25  ./conf.d/README
查当前目录下的所有普通文件,并在- e x e c选项中使用ls -l命令将它们列出


=================================================
在/ l o g s目录中查找更改时间在5日以前的文件并删除它们:
$ find logs -type f -mtime +5 -exec  -ok  rm {} \;


=================================================
查询当天修改过的文件
[root@book class]# find  ./  -mtime  -1  -type f  -exec  ls -l  {} \;


=================================================
查询文件并询问是否要显示
[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]#

=================================================
查询并交给awk去处理
[root@book class]# who  |  awk  '{print $1"\t"$2}'
cnscn   pts/0

=================================================
awk---grep---sed

[root@book class]# df  -k |  awk '{print $1}' |  grep  -v  'none' |  sed  s"/\/dev\///g"
文件系统
sda2
sda1
[root@book class]# df  -k |  awk '{print $1}' |  grep  -v  'none'
文件系统
/dev/sda2
/dev/sda1


1)在/tmp中查找所有的*.h,并在这些文件中查找“SYSCALL_VECTOR",最后打印出所有包含"SYSCALL_VECTOR"的文件名

A) find  /tmp  -name  "*.h"  | xargs  -n50  grep SYSCALL_VECTOR
B) grep  SYSCALL_VECTOR  /tmp/*.h | cut   -d':'  -f1| uniq > filename
C) find  /tmp  -name "*.h"  -exec grep "SYSCALL_VECTOR"  {}  \; -print


2)find / -name filename -exec rm -rf {} \;
   find / -name filename -ok rm -rf {} \;


3)比如要查找磁盘中大于3M的文件:
find . -size +3000k -exec ls -ld {} ;


4)将find出来的东西拷到另一个地方
find *.c -exec cp '{}' /tmp ';'

如果有特殊文件,可以用cpio,也可以用这样的语法:
find dir -name filename -print | cpio -pdv newdir


6)查找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"


原文地址 http://blog.chinaunix.net/u/21717/showart_264526.html 
分享到:
评论

相关推荐

    Linux Find 命令详解

    Linux Find 命令详解 非常详尽

    Linux-find命令详解

    超级详细的Linux,find命令详解,很实用适合Linux学习爱好者!

    find命令参数详解

    find命令详解,详细说明了find命令中的每个参数,并带有实例

    linux下find命令详解

    详细介绍了linux下的find命令经常使用的选项的意义和方法

    Linux Find命令详解---教你认识强大的Linux Find命令

    帮助您轻松工作及管理你的Linux系统 没什么好说的,想学就下。

    grep-find命令详解

    find 命令的一般格式:xargs 命令,find 命令的一般格式:xargs 命令

    unix下find命令详解 之前在网上收集的,有实例

    unix下find命令详解 之前在网上收集的,有实例

    Linux之find命令详解

    Linux运维实用命令之find详解,find命令用于Linux查询最实用命令之一,请大家参考。

    Linux Find_命令使用详解

    Linux Find_命令使用详解

    Linux文本查找命令find的用法详解

    今天小编就为大家分享一篇关于Linux文本查找命令find的用法详解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧

    Linux文件查找命令之find讲解.doc

    Linux下find命令在目录结构中搜索文件,并执行指定的操作。Linux下find命令提供了相当多的查找条件,功能很强大。由于find具有强大的功能,所以它的选项也很多,其中大部分选项都值得我们花时间来了解一下。即使系统...

    Linux find命令用法详解

    Linux find命令 Linux find命令用来在指定目录下查找文件。任何位于参数之前的字符串都将被视为欲查找的目录名。如果使用该命令时,不设置任何参数,则find命令将在当前目录下查找子目录与文件。并且将查找到的子...

    Linux中 find查找命令用法详解

    本篇文章主要介绍了Linux中 find查找命令详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

    find详解.PDF

    find是liunx中一个及其强大的命令,属于必须要掌握的。这里只讲find,并讲find的所有用法及示例完全展示出来,适合当工具书用。

    DOS编程高级技巧,命令详解,相关知识

    第二章 FOR命令详解 一、参数 /d 二、参数 /R 三、参数 /L 四、参数 /F 第三章 FOR命令中的变量 一、 ~I - 删除任何引号("),扩展 %I 二、 %~fI - 将 %I 扩展到一个完全合格的路径名 三、 %~dI - 仅将 %I 扩展到一个...

    linux命令详解词典

    主要描述linux中常用到的命令:cd,ls,chown ,cp,cup,find,less,ln...等。

    LINUX常用命令详解

    16. find 17. grep 18. more 19. less 20. head 21. tail 22. cut 23. at 24. crontab 25. sleep 26. kill 27. ps pstree 28. top 29. expr 30. locate 31. split 33. man,info 34. alias 35. unalias 36. clear

    UNIX常用命令大全

    可以直接打印 共11页 第一章 目录及文件操作命令 2 1.1 ls 2 1.2 pwd 2 1.3 cd 2 1.4 mkdir 2 1.5 rmdir 2 1.6 cat 2 1.7 head 2 1.8 more 2 1.9 cp 3 1.10 mv 3 ...1.24 find 4 ...UNIX的Shell命令详解 10

    Linux中find命令-path -prune用法详解

    在Windows中可以在某些路径中查找文件,也可以设定不在某些路径中查找文件,下面用Linux中的find的命令结合其-path -prune参数来看看在Linux中怎么实现此功能。  假如在当前目录下查找文件,且当前目录下有很多...

Global site tag (gtag.js) - Google Analytics