导航:首页 > 编程系统 > linux中find的用法

linux中find的用法

发布时间:2023-12-28 20:47:13

1. linux如何查找以某个字母打头的文件或文件夹 比如,/etc目录下很多文件,我想列出所有以c开头的文件或文件

ls -al |grep c* 这样就可以了,运用管道命令|。

如何使用命令行在Linux中查找文件和文件夹

使用查找命令,“find”命令允许您搜索知道近似文件名的文件。该命令的最简单形式在当前目录中搜索文件,并递归地通过其与所提供的搜索条件匹配的子目录。您可以按名称,所有者,组,类型,权限,日期和其他条件搜索文件。

在提示符下键入以下命令将列出当前目录中的所有文件。

“find”后的点表示当前目录。

如果您只想要显示可执行文件的路径,而不是源和路径(man(页)),请使用该-b选项。例如,该命令whereis -b firefox将仅显示/usr/bin/firefox为结果。这很方便,因为您可能会比搜索该程序的源页面和手册页更频繁地搜索程序的可执行文件。您也可以仅搜索源文件(-s)或仅搜索手册页(-m)。

有关whereis命令的详细信息,请键入man whereis终端窗口,然后按Enter键。

  • 8

    了解Whereis命令与哪个命令之间的区别

    whereis命令显示命令的二进制,源和手册页的位置,而哪个命令仅显示命令的二进制文件的位置。

    whereis命令搜索二进制,源和man文件的特定目录列表,而哪个命令搜索当前用户的PATH环境变量中列出的目录。对于whereis命令,可以在命令的手册页的FILES部分中找到具体目录的列表。

    当涉及默认显示的结果时,whereis命令显示它找到的所有内容,而哪个命令只显示找到的第一个可执行文件。您可以使用-a前面讨论过的选项来更改该命令。

    因为whereis命令只使用硬编码到命令中的路径,所以您可能并不总是找到您要查找的内容。如果您正在搜索一个程序,则认为可能安装在whereis命令的手册页中未列出的目录中,您可能希望使用该-a选项以查找系统中所有出现的命令,

  • 2. find命令怎么使用

    本视频是由ThinkpadE15品牌、centos7系统、find4.6版本录制的。Linux中find的使用法?
    操作系统:centos7
    软件版本:find4.6
    设备型号:ThinkPadE15
    find命令用于查找指定目录下的文件,同时也可以调用其它命令执行相应的操作。

    find语法格式:find路径名称选项
    find命令选项:
    -name按照文件名查找文件。“名称”
    -perm按照文件权限来查找文件。666777等
    -user按照文件属主来查找文件
    -group按照文件所属的组来查找文件
    -mtime-n/+n按照文件的更改时间来查找文件,
    -n表示文件更改时间距现在n天以内
    +n表示文件更改时间距现在n天以前
    -type查找某一类型的文件
    b-块设备文件
    d-目录
    c-字符设备文件
    p-管道文件
    l-符号链接文件
    f-普通文件
    -sizen查找符合指定的文件大小的文件
    -exec对匹配的文件执行该参数所给出的其他linux命令,相应命令的形式为'命令{};,注意{}和;之间的空格,{}代表查到的内容
    例1:查找当前目录下所有的TXT格式的文件
    [root@xuegod63~]#toucha.txtxuegod.txt
    [root@xuegod63~]#find.-name"*.txt"
    。。。
    ./a.txt
    ./xuegod.txt
    2、按照更改时间或访问时间等查找文件
    如果希望按照更改时间来查找文件,可以使用mtime,atime或ctime选项
    mtime:文件最后一次修改的时间
    atime:最后一次访问时间
    ctime:文件的最后一次变化时间,也就是修改时间
    例1:在root目录下查找更改时间在1天以内,被黑客修改的文件
    [root@xuegod63~]#find/root/-mtime-1

    对查找内容执行相应命令
    -exec这个选项参数后面可以跟自定义的SHELL命令,格式如下:
    例2:把查找到的文件复制到一个指定的目录
    [root@xuegod63~]#touch{1,2,3}.back
    [root@xuegod63mnt]#find/root-name"*.txt"-execcp{}/opt;
    例3:查找多个类型文件
    find命令中比较符的使用:
    -aand并且
    -oor或者
    +超过
    -低于
    [root@xuegod63~]#toucha.pdfback.sh
    [root@xuegod63~]#find./-name"*.sh"-o-name"*.pdf"
    [root@xuegod63~]#find/etc-size+20k-a-size-50k|wc-l
    22
    [root@xuegod63~]#find/etc-size+20k|wc-l
    49
    例4:按权限查找:-perm
    [root@xuegod63~]#find/bin/-perm755#等于0755权限的文件或目录
    [root@xuegod63~]#find/bin/-perm-644#-perm-644至少有644权限的文件或目录
    例5:查找的目录深度:
    -maxdepth1#只查找目录第一层的文件和目录
    如:查找/bin目录下权限等于644的文件
    [root@xuegod63~]#find/etc/-maxdepth1-perm644|more

    总结:find命令使用方法和参数
    find命令选项:
    -name按照文件名查找文件。“名称”
    -perm按照文件权限来查找文件。666777等
    -user按照文件属主来查找文件
    -group按照文件所属的组来查找文件
    -mtime-n/+n按照文件的更改时间来查找文件,
    -n表示文件更改时间距现在n天以内
    +n表示文件更改时间距现在n天以前
    -type查找某一类型的文件
    b-块设备文件
    d-目录
    c-字符设备文件
    p-管道文件
    l-符号链接文件
    f-普通文件
    -sizen查找符合指定的文件大小的文件
    -exec对匹配的文件执行该参数所给出的其他linux命令,相应命令的形式为'命令{};,注意{}和;之间的空格,{}代表查到的内容

    3. Linux中如何在指定目录下查找文件

    find顾名思义就是查找的意思,该命令是各种Linux发行版本中比较重要的、常用的一个命令。Linux下的find命令提供相当多的查找条件,功能比较强大,掌握这个命令之后,对平时的系统运维、管理工作可以达到事半功倍的效果。那么Linux系统中find命令的用法是什么?具体请看下文:

    Linux

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

    语法格式:

    find path -option [ -print ] [ -exec -ok command ] {} \;

    参数说明:

    find根据下列规则判断path和expression,在命令列上第一个-(),!之前的部分为path,之后的部分是expression。如果path是空字串则使用目前路径,如果expression是空字串则使用-print为预设expression。

    expression中可使用的选项有二三十个,在此只介绍常用的部分。

    -mount,-xedv:只检查和指定目录在同一个文件系统下的文件,避免列出其他文件系统中的文件;

    -amin n:在过去n分钟内被读取过;

    -anewer file:比文件file更晚被读取过的文件;

    -atime n:在过去n天内被读取过的文件;

    -cmin n:在过去n分钟内被修改过;

    -cnewer file:比文件file更新的文件;

    -ctime n:在过去n天内被修改过的文件;

    -empty:空的文件-gid n or -group name:gid是n或是group名称是name;

    -ipath p,-path p:路径名称符合p的文件,ipath会忽略大小写;

    -name name,-iname name:文件名称符合name的文件,iname会忽略大小写;

    -size n:文件大小是n单位,b代表512位元组的区块,c表示字元数,k表示kilo bytes,w是二个位元组。

    -type c:文件类型是C的文件。

    4. linux中find命令的使用方法有哪些

    find命令的参数及使用命令:
    pathname: find命令所查找的目录路径。例如用.来表示当前目录,用/来表示系统根目录。
    -print: find命令将匹配的文件输出到标准输出。
    -exec: find命令对匹配的文件执行该参数所给出的shell命令。相应命令的形式为'command' { } \;,注意{ }和\;之间的空格。
    -ok: 和-exec的作用相同,只不过以一种更为安全的模式来执行该参数所给出的shell命令,在执行每一个命令之前,都会给出提示,让用户来确定是否执行。
    #-print 将查找到的文件输出到标准输出
    #-exec command {} \; —–将查到的文件执行command操作,{} 和 \;之间有空格
    #-ok 和-exec相同,只不过在操作前要询用户
    例:find . -name .svn | xargs rm -rf
    ====================================================
    -name filename #查找名为filename的文件
    -perm #按执行权限来查找
    -user username #按文件属主来查找
    -group groupname #按组来查找
    -mtime -n +n #按文件更改时间来查找文件,-n指n天以内,+n指n天以前
    -atime -n +n #按文件访问时间来查GIN: 0px">
    -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]*" -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 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"

    5. 如何在linux系统下使用 find 命令

    * 通过文件名查找:

    这个方法说起来就和在WINDOWS下查找文件一样容易理解了。如果你把这个文件放在单个的文件夹里面,只要使用常见的“ls"命令就能方便的查找出来, 那么使用“find”命令来查找它就不能给你留下深刻的印象,毕竟“find”命令的强大功能不止这个。如果知道了某个文件的文件名,而不知道这个文件放 到哪个文件夹,甚至是层层套嵌的文件夹里。举例说明,假设你忘记了httpd.conf这个文件在系统的哪个目录下,甚至在系统的某个地方也不知道,则这 是可以使用如下命令:

    find / -name httpd.conf

    这个命令语法看起来很容易就明白了,就是直接在find后面写上 -name,表明要求系统按照文件名查找,最后写上httpd.conf这个目标文件名即可。稍等一会系统会在计算机屏幕上显示出查找结果列表:

    etc/httpd/conf/httpd.conf

    这就是httpd.conf这个文件在Linux系统中的完整路径。查找成功。

    如果输入以上查找命令后系统并没有显示出结果,那么不要以为系统没有执行find/ -name httpd.conf命令,而可能是你的系统中没有安装Apache服务器,这时只要你安装了Apache Web服务器,然后再使用find / -name httpd.conf就能找到这个配置文件了。

    * 无错误查找技巧:

    在 Linux系统中“find”命令是大多数系统用户都可以使用的命令,并不是ROOT系统管理员的专利。但是普通用户使用“find”命令时也有可能遇到 这样的问题,那就是Linux系统中系统管理员ROOT可以把某些文件目录设置成禁止访问模式。这样普通用户就没有权限用“find”命令来查询这些目录 或者文件。当普通用户使用“find”命令来查询这些文件目录是,往往会出现"Permissiondenied."(禁止访问)字样。系统将无法查询到 你想要的文件。为了避免这样的错误,我们可是使用转移错误提示的方法尝试着查找文件,输入

    find / -name access_log 2>/dev/null

    这个方法是把查找错误提示转移到特定的目录中去。系统执行这个命令后,遇到错误的信息就直接输送到stderrstream 2 中,access_log 2就是表明系统将把错误信息输送到stderrstream 2中,/dev/null是一个特殊的文件,表明空的或者错误的信息,这样查询到的错误信息将被转移了,不会再显示了。(这个地方没弄明白)

    在 Linux系统查找文件也会遇到这样一个实际问题。如果我们在整个硬盘,这个系统中查找某个文件就要花费相当长的一段时间,特别是大型Linux系统和容 量较大的硬盘,文件放在套嵌很深的目录中的时候。如果我们知道了这个文件存放在某个大的目录中,那么只要在这个目录中往下找就能节省很多时间了。使用 find /etc -name httpd.conf 就可以解决这个问题。上面的命令就是表示在etc目录中查询httpd.conf这个文件。这里再说明一下“/ ”这个函数符号的含义,如果输入 “find/ ”就是表示要求Linux系统在整个ROOT目录下查找文件,也就是在整个硬盘上查找文件,而“find/etc”就是只在 etc目录下查找文件。因为“find/etc”表示只在etc目录下查找文件,所以查找的速度就相应要快很多了。

    * 根据部分文件名查找方法:

    这个方法和在WINDOWS中查找已知的文件名方法是一样的。不过在Linux中根据部分文件名查找文件的方法要比在WINDOWS中的同类查找方法要强 大得多。例如我们知道某个文件包含有srm这3个字母,那么要找到系统中所有包含有这3个字母的文件是可以实现的,输入:

    find /etc -name '*srm*'

    这个命令表明了Linux系统将在/etc整个目录中查找所有的包含有srm这3个字母的文件,比如 absrmyz, tibc.srm等等符合条件的文件都能显示出来。如果你还知道这个文件是由srm 这3个字母打头的,那么我们还可以省略最前面的星号,命令如下:

    find/etc -name 'srm*'.只有像srmyz 这样的文件才被查找出来,象absrmyz或者 absrm这样的文件都不符合要求,不被显示,这样查找文件的效率和可靠性就大大增强了。

    * 根据文件的特征查询方法:

    如果只知道某个文件的大小,修改日期等特征也可以使用“find”命令查找出来,这和WINDOWS系统中的"搜索"功能是基本相同的。在微软的"搜索 "中WINDOWS中的"搜索助理"使得搜索文件和文件夹、打印机、用户以及网络中的其他计算机更加容易。它甚至使在Internet 上搜索更加容易。"搜索助理"还包括一个索引服务,该服务维护了计算机中所有文件的索引,使得搜索速度更快。使用"搜索助理"时,用户可以指定多个搜索标准。例如,用户可以按名称、类型及大小搜索文件和文件夹。用户甚至可以搜索包含特定文本的文件。如果用户正使用 Active Directory,这时还可以搜索带有特定名称或位置的打印机。

    例如我们知道一个Linux文件大小为1,500 bytes,那么我们可是使用如下命令来查询find / -size 1500c,字符 c 表明这个要查找的文件的大小是以bytes为单位。如果我们连这个文件的具体大小都不知道,那么在Linux中还可以进行模糊查找方式来解决。例如我们输 入find/ -size +10000000c 这个命令,则标明我们指定系统在根目录中查找出大于10000000字节的文件并显示出来。命令中的"+"是表示要求系统只列出大于指定大小的文件,而使 用"-"则表示要求系统列出小于指定大小的文件。下面的列表就是在Linux使用不同"find"命令后系统所要作出的查找动作,从中我们很容易看出在 Linux中使用"find"命令的方式是很多的,"find"命令查找文件只要灵活应用,丝毫不必在WINDOWS中查找能力差。

    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命令所可以指定文件的特征进行查找的部分条件。在这里并没有列举所有的查找条件,参考有关Linux有关书籍可以知道所有 find命令的查找函数。

    -amin n

    查找系统中最后N分钟访问的文件

    -atime n

    查找系统中最后n*24小时访问的文件

    -cmin n

    查找系统中最后N分钟被改变状态的文件

    -ctime n

    查找系统中最后n*24小时被改变状态的文件

    -empty

    查找系统中空白的文件,或空白的文件目录,或目录中没有子目录的文件夹

    -false

    查找系统中总是错误的文件

    -fstype type

    查找系统中存在于指定文件系统的文件,例如:ext2 .

    -gid n

    查找系统中文件数字组 ID 为 n的文件

    -group gname

    查找系统中文件属于gnam文件组,并且指定组和ID的文件

    * Find命令的控制选项说明:

    Find命令也提供给用户一些特有的选项来控制查找操作。下表就是我们总结出的最基本,最常用的find命令的控制选项及其用法。

    选项 用途描述

    -daystart 测试系统从今天开始24小时以内的文件,用法类似-amin

    -depth 使用深度级别的查找过程方式,在某层指定目录中优先查找文件内容

    -follow 遵循通配符链接方式查找; 另外,也可忽略通配符链接方式查询

    -help 显示命令摘要

    -maxdepth levels

    在某个层次的目录中按照递减方法查找

    -mount

    不在文件系统目录中查找, 用法类似 -xdev.

    -noleaf 禁止在非UNUX文件系统,MS-DOS系统,CD-ROM文件系统中进行最优化查找

    -version 打印版本数字

    注:使用-follow选项后,find命令则遵循通配符链接方式进行查找,除非你指定这个选项,否则一般情况下find命令将忽略通配符链接方式进行文件查找。

    6. linux中find命令的使用方法有哪些

    find命令的参数及使用命令:
    pathname: find命令所查找的目录路径。例如用.来表示当前目录,用/来表示系统根目录。
    -print: find命令将匹配的文件输出到标准输出。
    -exec: find命令对匹配的文件执行该参数所给出的shell命令。相应命令的形式为'command' { } \;,注意{ }和\;之间的空格。
    -ok: 和-exec的作用相同,只不过以一种更为安全的模式来执行该参数所给出的shell命令,在执行每一个命令之前,都会给出提示,让用户来确定是否执行。
    #-print 将查找到的文件输出到标准输出
    #-exec command {} \; —–将查到的文件执行command操作,{} 和 \;之间有空格
    #-ok 和-exec相同,只不过在操作前要询用户
    例:find . -name .svn | xargs rm -rf
    ====================================================
    -name filename #查找名为filename的文件
    -perm #按执行权限来查找
    -user username #按文件属主来查找
    -group groupname #按组来查找
    -mtime -n +n #按文件更改时间来查找文件,-n指n天以内,+n指n天以前
    -atime -n +n #按文件访问时间来查GIN: 0px">
    -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]*" -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 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"

    阅读全文

    与linux中find的用法相关的资料

    热点内容
    linux连接ftp 浏览:512
    es文件浏览器视频笔记 浏览:874
    mac无法打开描述文件 浏览:134
    什么软件打文件 浏览:53
    数据库无数据变成0 浏览:899
    名企笔试如何刷编程题 浏览:49
    js跳到页面某地 浏览:550
    jsp展示clob字段 浏览:779
    nyx在网络上是什么意思 浏览:145
    乐播农业app是什么 浏览:530
    编程框架如何开发 浏览:136
    金庸群侠传3修改代码 浏览:712
    检察院的文件类别有哪些 浏览:793
    怎么把九游残留数据删除 浏览:828
    有什么女生主动聊天的app 浏览:436
    有哪些可以督促自己的app 浏览:244
    用USB传输视频文件夹显示为空 浏览:710
    恢复文件软件免费版手机 浏览:648
    lg怎么隐藏文件 浏览:836
    苹果免费读书app推荐 浏览:497

    友情链接