linux find exec(find的exec怎么用)
大家好,今天小编来为大家解答linux find exec这个问题,find的exec怎么用很多人还不知道,现在让我们一起来看看吧!
linux系统中find命令之exec使用介绍
find是我们很常用的一个Linux命令,但是我们一般查找出来的并不仅仅是看看而已,还会有进一步的操作,这个时候exec的作用就显现出来了。
exec解释:
-exec 参数后面跟的是command命令,它的终止是以;为结束标志的,所以这句命令后面的分号是不可缺少的,考虑到各个系统中分号会有不同的意义,所以前面加反斜杠。
{} 花括号代表前面find查找出来的文件名。
使用find时,只要把想要的操作写在一个文件里,就可以用exec来配合find查找,很方便的。在有些操作系统中只允许-exec选项执行诸如l s或ls-l这样的命令。大多数用户使用这一选项是为了查找旧文件并删除它们。建议在真正执行rm命令删除文件之前,最好先用ls命令看一下,确认它们是所要删除的文件。 exec选项后面跟随着所要执行的命令或脚本,然后是一对儿{},一个空格和一个/,最后是一个分号。为了使用exec选项,必须要同时使用print选项。如果验证一下find命令,会发现该命令只输出从当前路径起的相对路径及文件名。
实例1:ls-l命令放在find命令的-exec选项中
命令:
find.-type f-exec ls-l{}/;
输出:
复制代码
代码如下:
[root@localhost test]# find.-type f-exec ls-l{}/;
-rw-r--r-- 1 root root 127 10-28 16:51./log2014.log
-rw-r--r-- 1 root root 0 10-28 14:47./test4/log3-2.log
-rw-r--r-- 1 root root 0 10-28 14:47./test4/log3-3.log
-rw-r--r-- 1 root root 0 10-28 14:47./test4/log3-1.log
-rw-r--r-- 1 root root 33 10-28 16:54./log2013.log
-rw-r--r-- 1 root root 302108 11-03 06:19./log2012.log
-rw-r--r-- 1 root root 25 10-28 17:02./log.log
-rw-r--r-- 1 root root 37 10-28 17:07./log.txt
-rw-r--r-- 1 root root 0 10-28 14:47./test3/log3-2.log
-rw-r--r-- 1 root root 0 10-28 14:47./test3/log3-3.log
-rw-r--r-- 1 root root 0 10-28 14:47./test3/log3-1.log
[root@localhost test]#
说明:
上面的例子中,find命令匹配到了当前目录下的所有普通文件,并在-exec选项中使用ls-l命令将它们列出。
实例2:在目录中查找更改时间在n日以前的文件并删除它们
命令:
find.-type f-mtime+14-exec rm{}/;
输出:
复制代码
代码如下:
[root@localhost test]# ll
总计 328
-rw-r--r-- 1 root root 302108 11-03 06:19 log2012.log
-rw-r--r-- 1 root root 33 10-28 16:54 log2013.log
-rw-r--r-- 1 root root 127 10-28 16:51 log2014.log
lrwxrwxrwx 1 root root 7 10-28 15:18 log_link.log- log.log
-rw-r--r-- 1 root root 25 10-28 17:02 log.log
-rw-r--r-- 1 root root 37 10-28 17:07 log.txt
drwxr-xr-x 6 root root 4096 10-27 01:58 scf
drwxrwxrwx 2 root root 4096 10-28 14:47 test3
drwxrwxrwx 2 root root 4096 10-28 14:47 test4
[root@localhost test]# find.-type f-mtime+14-exec rm{}/;
[root@localhost test]# ll
总计 312
-rw-r--r-- 1 root root 302108 11-03 06:19 log2012.log
lrwxrwxrwx 1 root root 7 10-28 15:18 log_link.log- log.log
drwxr-xr-x 6 root root 4096 10-27 01:58 scf
drwxrwxrwx 2 root root 4096 11-12 19:32 test3
drwxrwxrwx 2 root root 4096 11-12 19:32 test4
[root@localhost test]#
说明:
在shell中用任何方式删除文件之前,应当先查看相应的文件,一定要小心!当使用诸如mv或rm命令时,可以使用-exec选项的安全模式。它将在对每个匹配到的文件进行操作之前提示你。
实例3:在目录中查找更改时间在n日以前的文件并删除它们,在删除之前先给出提示
命令:
find.-name"*.log"-mtime+5-ok rm{}/;
输出:
复制代码
代码如下:
[root@localhost test]# ll
总计 312
-rw-r--r-- 1 root root 302108 11-03 06:19 log2012.log
lrwxrwxrwx 1 root root 7 10-28 15:18 log_link.log- log.log
drwxr-xr-x 6 root root 4096 10-27 01:58 scf
drwxrwxrwx 2 root root 4096 11-12 19:32 test3
drwxrwxrwx 2 root root 4096 11-12 19:32 test4
[root@localhost test]# find.-name"*.log"-mtime+5-ok rm{}/;
rm..../log_link.log? y
rm..../log2012.log? n
[root@localhost test]# ll
总计 312
-rw-r--r-- 1 root root 302108 11-03 06:19 log2012.log
drwxr-xr-x 6 root root 4096 10-27 01:58 scf
drwxrwxrwx 2 root root 4096 11-12 19:32 test3
drwxrwxrwx 2 root root 4096 11-12 19:32 test4
[root@localhost test]#
说明:
在上面的例子中, find命令在当前目录中查找所有文件名以.log结尾、更改时间在5日以上的文件,并删除它们,只不过在删除之前先给出提示。按y键删除文件,按n键不删除。
实例4:-exec中使用grep命令
命令:
find/etc-name"passwd*"-exec grep"root"{}/;
输出:
复制代码
代码如下:
[root@localhost test]# find/etc-name"passwd*"-exec grep"root"{}/;
root:x:0:0:root:/root:/bin/bash
root:x:0:0:root:/root:/bin/bash
[root@localhost test]#
说明:
任何形式的命令都可以在-exec选项中使用。 在上面的例子中我们使用grep命令。find命令首先匹配所有文件名为“ passwd*”的文件,例如passwd、passwd.old、passwd.bak,然后执行grep命令看看在这些文件中是否存在一个root用户。
实例5:查找文件移动到指定目录
命令:
find.-name"*.log"-exec mv{}../;
输出:
复制代码
代码如下:
[root@localhost test]# ll
总计 12drwxr-xr-x 6 root root 4096 10-27 01:58 scf
drwxrwxr-x 2 root root 4096 11-12 22:49 test3
drwxrwxr-x 2 root root 4096 11-12 19:32 test4
[root@localhost test]# cd test3/
[root@localhost test3]# ll
总计 304
-rw-r--r-- 1 root root 302108 11-03 06:19 log2012.log
-rw-r--r-- 1 root root 61 11-12 22:44 log2013.log
-rw-r--r-- 1 root root 0 11-12 22:25 log2014.log
[root@localhost test3]# find.-name"*.log"-exec mv{}../;
[root@localhost test3]# ll
总计 0[root@localhost test3]# cd..
[root@localhost test]# ll
总计 316
-rw-r--r-- 1 root root 302108 11-03 06:19 log2012.log
-rw-r--r-- 1 root root 61 11-12 22:44 log2013.log
-rw-r--r-- 1 root root 0 11-12 22:25 log2014.log
drwxr-xr-x 6 root root 4096 10-27 01:58 scf
drwxrwxr-x 2 root root 4096 11-12 22:50 test3
drwxrwxr-x 2 root root 4096 11-12 19:32 test4
[root@localhost test]#
实例6:用exec选项执行cp命令
命令:
find.-name"*.log"-exec cp{} test3/;
输出:
复制代码
代码如下:
[root@localhost test3]# ll
总计 0[root@localhost test3]# cd..
[root@localhost test]# ll
总计 316
-rw-r--r-- 1 root root 302108 11-03 06:19 log2012.log
-rw-r--r-- 1 root root 61 11-12 22:44 log2013.log
-rw-r--r-- 1 root root 0 11-12 22:25 log2014.log
drwxr-xr-x 6 root root 4096 10-27 01:58 scf
drwxrwxr-x 2 root root 4096 11-12 22:50 test3
drwxrwxr-x 2 root root 4096 11-12 19:32 test4
[root@localhost test]# find.-name"*.log"-exec cp{} test3/;
cp:“./test3/log2014.log”及“test3/log2014.log”为同一文件
cp:“./test3/log2013.log”及“test3/log2013.log”为同一文件
cp:“./test3/log2012.log”及“test3/log2012.log”为同一文件
[root@localhost test]# cd test3
[root@localhost test3]# ll
总计 304
-rw-r--r-- 1 root root 302108 11-12 22:54 log2012.log
-rw-r--r-- 1 root root 61 11-12 22:54 log2013.log
-rw-r--r-- 1 root root 0 11-12 22:54 log2014.log
[root@localhost test3]#
Linuxfind命令实例教程15个find命令用法
除了在一个目录结构下查找文件这种基本的操作,你还可以用find命令实现一些实用的操作,使你的命令行之旅更加简易。
本文将介绍15种无论是于新手还是老鸟都非常有用的Linux find命令。
首先,在你的home目录下面创建下面的空文件,来测试下面的find命令示例。
复制代码代码如下:
# vim create_sample_files.sh
touch MybashProgram.sh
touch mycprogram.c
touch MyCProgram.c
touch Program.c
mkdir backup
cd backup
touch MybashProgram.sh
touch mycprogram.c
touch MyCProgram.c
touch Program.c
# chmod+x create_sample_files.sh
#./create_sample_files.sh
# ls-R
.:
backup MybashProgram.sh MyCProgram.c
create_sample_files.sh mycprogram.c Program.c
./backup:
MybashProgram.sh mycprogram.c MyCProgram.c Program.c
1.用文件名查找文件
这是find命令的一个基本用法。下面的例子展示了用MyCProgram.c作为查找名在当前目录及其子目录中查找文件的方法。
复制代码代码如下:
# find-name"MyCProgram.c"
./backup/MyCProgram.c
./MyCProgram.c
2.用文件名查找文件,忽略大小写
这是find命令的一个基本用法。下面的例子展示了用MyCProgram.c作为查找名在当前目录及其子目录中查找文件的方法,忽略了大小写。
复制代码代码如下:
# find-iname"MyCProgram.c"
./mycprogram.c
./backup/mycprogram.c
./backup/MyCProgram.c
./MyCProgram.c
3.使用mindepth和maxdepth限定搜索指定目录的深度
在root目录及其子目录下查找passwd文件。
复制代码代码如下:
# find/-name passwd
./usr/share/doc/nss_ldap-253/pam.d/passwd
./usr/bin/passwd
./etc/pam.d/passwd
./etc/passwd
在root目录及其1层深的子目录中查找passwd.(例如root— level 1, and one sub-directory— level 2)
复制代码代码如下:
# find-maxdepth 2-name passwd
./etc/passwd
在root目录下及其最大两层深度的子目录中查找passwd文件.(例如 root— level 1, and two sub-directories— level 2 and 3)
复制代码代码如下:
# find/-maxdepth 3-name passwd
./usr/bin/passwd
./etc/pam.d/passwd
./etc/passwd
在第二层子目录和第四层子目录之间查找passwd文件。
复制代码代码如下:
# find-mindepth 3-maxdepth 5-name passwd
./usr/bin/passwd
./etc/pam.d/passwd
4.在find命令查找到的文件上执行命令
下面的例子展示了find命令来计算所有不区分大小写的文件名为“MyCProgram.c”的文件的MD5验证和。{}将会被当前文件名取代。
复制代码代码如下:
find-iname"MyCProgram.c"-exec md5sum{} \;
d41d8cd98f00b204e9800998ecf8427e./mycprogram.c
d41d8cd98f00b204e9800998ecf8427e./backup/mycprogram.c
d41d8cd98f00b204e9800998ecf8427e./backup/MyCProgram.c
d41d8cd98f00b204e9800998ecf8427e./MyCProgram.c
5.相反匹配
显示所有的名字不是MyCProgram.c的文件或者目录。由于maxdepth是1,所以只会显示当前目录下的文件和目录。
复制代码代码如下:
find-maxdepth 1-not-iname"MyCProgram.c"
.
./MybashProgram.sh
./create_sample_files.sh
./backup
./Program.c
6.使用inode编号查找文件
任何一个文件都有一个独一无二的inode编号,借此我们可以区分文件。创建两个名字相似的文件,例如一个有空格结尾,一个没有。
复制代码代码如下:
touch"test-file-name"
# touch"test-file-name"
[Note: There is a space at the end]
# ls-1 test*
test-file-name
test-file-name
从ls的输出不能区分哪个文件有空格结尾。使用选项-i,可以看到文件的inode编号,借此可以区分这两个文件。
复制代码代码如下:
ls-i1 test*
16187429 test-file-name
16187430 test-file-name
可以如下面所示在find命令中指定inode编号。在此,find命令用inode编号重命名了一个文件。
复制代码代码如下:
find-inum 16187430-exec mv{} new-test-file-name \;
# ls-i1*test*
16187430 new-test-file-name
16187429 test-file-name
可以在你想对那些像上面一样的糟糕命名的文件做某些操作时使用这一技术。
例如,名为file?.txt的文件名字中有一个特殊字符。
若你想执行“rm file?.txt”,下面所示的所有三个文件都会被删除。
所以,采用下面的步骤来删除”file?.txt”文件。
复制代码代码如下:
ls
file1.txt file2.txt file?.txt
找到每一个文件的inode编号。
复制代码代码如下:
ls-i1
804178 file1.txt
804179 file2.txt
804180 file?.txt
如下所示:?使用inode编号来删除那些具有特殊符号的文件名。
复制代码代码如下:
find-inum 804180-exec rm{} \;
# ls
file1.txt file2.txt
[Note: The file with name"file?.txt" is now removed]
7.根据文件权限查找文件
下面的操作时合理的:
找到具有指定权限的文件
忽略其他权限位,检查是否和指定权限匹配
根据给定的八进制/符号表达的权限搜索
此例中,假设目录包含以下文件。注意这些文件的权限不同。
复制代码代码如下:
ls-l
total 0
-rwxrwxrwx 1 root root 0 2009-02-19 20:31 all_for_all
-rw-r--r-- 1 root root 0 2009-02-19 20:30 everybody_read
---------- 1 root root 0 2009-02-19 20:31 no_for_all
-rw------- 1 root root 0 2009-02-19 20:29 ordinary_file
-rw-r----- 1 root root 0 2009-02-19 20:27 others_can_also_read
----r----- 1 root root 0 2009-02-19 20:27 others_can_only_read
找到具有组读权限的文件。使用下面的命令来找到当前目录下对同组用户具有读权限的文件,忽略该文件的其他权限。
复制代码代码如下:
find.-perm-g=r-type f-exec ls-l{} \;
-rw-r--r-- 1 root root 0 2009-02-19 20:30./everybody_read
-rwxrwxrwx 1 root root 0 2009-02-19 20:31./all_for_all
----r----- 1 root root 0 2009-02-19 20:27./others_can_only_read
-rw-r----- 1 root root 0 2009-02-19 20:27./others_can_also_read
找到对组用户具有只读权限的文件。
复制代码代码如下:
find.-perm g=r-type f-exec ls-l{} \;
----r----- 1 root root 0 2009-02-19 20:27./others_can_only_read
找到对组用户具有只读权限的文件(使用八进制权限形式)。
复制代码代码如下:
find.-perm 040-type f-exec ls-l{} \;
----r----- 1 root root 0 2009-02-19 20:27./others_can_only_read
8.找到home目录及子目录下所有的空文件(0字节文件)
下面命令的输出文件绝大多数都是锁定文件盒其他程序创建的place hoders
find~-empty
只列出你home目录里的空文件。
find.-maxdepth 1-empty
只列出当年目录下的非隐藏空文件。
find.-maxdepth 1-empty-not-name".*"
9.查找5个最大的文件
下面的命令列出当前目录及子目录下的5个最大的文件。这会需要一点时间,取决于命令需要处理的文件数量。
复制代码代码如下:
find.-type f-exec ls-s{} \;| sort-n-r| head-5
10.查找5个最小的文件
方法同查找5个最大的文件类似,区别只是sort的顺序是降序。
复制代码代码如下:
find.-type f-exec ls-s{} \;| sort-n| head-5
上面的命令中,很可能你看到的只是空文件(0字节文件)。如此,你可以使用下面的命令列出最小的文件,而不是0字节文件。
复制代码代码如下:
find.-not-empty-type f-exec ls-s{} \;| sort-n| head-5
11.使用-type查找指定文件类型的文件
只查找socket文件
find.-type s
查找所有的目录
find.-type d
查找所有的一般文件
find.-type f
查找所有的隐藏文件
find.-type f-name".*"
查找所有的隐藏目录
find-type d-name".*"
12.通过和其他文件比较修改时间查找文件
显示在指定文件之后做出修改的文件。下面的find命令将显示所有的在ordinary_file之后创建修改的文件。
复制代码代码如下:
ls-lrt
total 0
-rw-r----- 1 root root 0 2009-02-19 20:27 others_can_also_read
----r----- 1 root root 0 2009-02-19 20:27 others_can_only_read
-rw------- 1 root root 0 2009-02-19 20:29 ordinary_file
-rw-r--r-- 1 root root 0 2009-02-19 20:30 everybody_read
-rwxrwxrwx 1 root root 0 2009-02-19 20:31 all_for_all
---------- 1 root root 0 2009-02-19 20:31 no_for_all
# find-newer ordinary_file
.
./everybody_read
./all_for_all
./no_for_all
13.通过文件大小查找文件
使用-size选项可以通过文件大小查找文件。
查找比指定文件大的文件
find~-size+100M
查找比指定文件小的文件
find~-size-100M
查找符合给定大小的文件
find~-size 100M
注意:–指比给定尺寸小,+指比给定尺寸大。没有符号代表和给定尺寸完全一样大。
14.给常用find操作取别名
若你发现有些东西很有用,你可以给他取别名。并且在任何你希望的地方执行。
复制代码代码如下:
常用的删除a.out文件。
alias rmao="find.-iname a.out-exec rm{} \;"
# rmao
删除c程序产生的core文件。
alias rmc="find.-iname core-exec rm{} \;"
# rmc
15.用find命令删除大型打包文件
下面的命令删除大于100M的*.zip文件。
find/-type f-name*.zip-size+100M-exec rm-i{} \;"
用别名rm100m删除所有大雨100M的*.tar文件。使用同样的思想可以创建rm1g,rm2g,rm5g的一类别名来删除所有大于1G,2G,5G的文件。
复制代码代码如下:
alias rm100m="find/-type f-name*.tar-size+100M-exec rm-i{} \;"
# alias rm1g="find/-type f-name*.tar-size+1G-exec rm-i{} \;"
# alias rm2g="find/-type f-name*.tar-size+2G-exec rm-i{} \;"
# alias rm5g="find/-type f-name*.tar-size+5G-exec rm-i{} \;"
# rm100m
# rm1g
# rm2g
# rm5g
详解Linux中查找目录和文件的find和locate命令
find
find路径-命令参数 [输出形式]
参数说明:
路径:告诉find在哪儿去找你要的东西,
命令参数:参数很多下面会说到
输出形式:输出形式很多,-print,-printf,-print0,-exec,-ok,-ls反正很多自己看手册吧。
说一下exec,
-exec find命令对匹配的文件执行该参数所给出的其他linux命令。相应命令的形式为'命令- and'{};,注意{}和;之间的空格。
-ok和- exec的作用相同,只不过和会人交互而已,OK执行前会向你确认是不是要执行。
find命令主要参数:
-name按照文件名查找文件。
-perm按照文件权限来查找文件。
-prune使用这一选项可以使find命令不在当前指定的目录中查找,如果同时使用了- depth选项,那么-prune选项将被find命令忽略。
-user按照文件属主来查找文件。
-group按照文件所属的组来查找文件。
-mtime-n+n按照文件的更改时间来查找文件,-n表示文件更改时间距现在n天以内,+n表示文件更改时间距现在n天以前。find命令还有-atime和-ctime选项,但它们都和-mtime选项
相似,所以我们在这里只介绍-mtime选项。
-nogroup查找无有效所属组的文件,即该文件所属的组在/etc/groups中不存在。
-nouser查找无有效属主的文件,即该文件的属主在/etc/passwd中不存在。
-newer file1! file2查找更改时间比文件file1新但比文件file2旧的文件。
-type查找某一类型的文件,诸如:
b-块设备文件。
d-目录。
c-字符设备文件。
p-管道文件。
l-符号链接文件。
f-普通文件。
s- socket文件
-size n[c]查找文件长度为n块的文件,带有c时表示文件长度以字节计。
-depth在查找文件时,首先查找当前目录中的文件,然后再在其子目录中查找。
-maxdepth查找最大目录层数如 1,即只查找一层目录
-fstype查找位于某一类型文件系统中的文件,这些文件系统类型通常可以在配置文件
/etc/fstab中找到,该配置文件中包含了本系统中有关文件系统的信息。
-mount在查找文件时不跨越文件系统mount点。
-follow如果find命令遇到符号链接文件,就跟踪至链接所指向的文件。
-cpio对匹配的文件使用cpio命令,将这些文件备份到磁带设备中。
例:
a,通过名字来查找
代码如下:
[zhangy@BlackGhost~]$ find~-name memcached.pid-print#查找home目录下文件名为memcache.pid的文件
/home/zhangy/memcached/memcached.pid
[zhangy@BlackGhost~]$ find.-name"*.pid"-print#.代表当前目录,查找所有以pid结尾的文件
./memcached/memcached.pid
./.tencent/qq/95219454.pid
[zhangy@BlackGhost~]$ find~-name"[0-9]*.pid"-print#查找以数字开头的所有pid文件,在这里要说[0-9]*不能匹配23,它跟一般的语言类正则不太一样,shell里面的*可以代表一切字符(单个,多个都行),如果想匹配2345只能这样写[0-9][0-9][0-9][0-9]
/home/zhangy/.tencent/qq/95219454.pid
[zhangy@BlackGhost~]$ find/home/zhangy/.tencent/-name"[0-9]*.pid"-print#在.tencent文件夹下面找pid文件
/home/zhangy/.tencent/qq/95219454.pid
b,通过文件权限来查找
代码如下:
[zhangy@BlackGhost css]$ find~-perm 755-print|more#~代表的是$home目录,查找权限为755的文件
/home/zhangy/www/css2/c_textshadow.html
/home/zhangy/www/css2/c_textautospace.html
[zhangy@BlackGhost css]$ find.-perm 700-name"u_*"-print|more#查找所有以产u_开头的,并且权限为700的文件
./css2/u_length_cm.html
./css2/u_length_px.html
c,prune来忽略目录来查找
代码如下:
[zhangy@BlackGhost download]$ find.-name"*.gz"-prune-o(!-name aaa)-print#查找在前目录中,不在以aaa结尾的目录中的,不以gz结尾的文件
.
./eaccelerator-0.9.5.3.tar
./fix-crash-in-excerpts.patch
./AddFeed_Widget_WordPress_Plugin.zip
./jQuery china-addthis plugin 1.07.rar
d,根据文件类型来查找文件
代码如下:
[zhangy@BlackGhost download]$ find.-type d-print#查找当前目录下面的目录
.
./ddd
[zhangy@BlackGhost download]$ find.!-type d-print#找当前目录下面的非目录文件
./eaccelerator-0.9.5.3.tar
./haproxy-1.3.15.7.tar.gz
./fix-crash-in-excerpts.patch
e,根据文件所属用户和用户组来找文件
代码如下:
[zhangy@BlackGhost download]$ find.-nouser-print#查找当前目录中,没有归属的文件
[zhangy@BlackGhost download]$ find/home/zhangy/download-user zhangy-group users-print#查找用户组为users,所属用户为zhangy的文件
/home/zhangy/download
/home/zhangy/download/eaccelerator-0.9.5.3.tar
/home/zhangy/download/haproxy-1.3.15.7.tar.gz
f,根文件大小来查找
代码如下:
[zhangy@BlackGhost download]$ find/home/zhangy/download-size+1000000c-print#查找文件大小大于1000000字符的文件,注意+号表示大于
/home/zhangy/download/eaccelerator-0.9.5.3.tar
/home/zhangy/download/mmseg-0.7.3.tar.gz
[zhangy@BlackGhost download]$ find/home/zhangy/download-size-10-print#查找文件大小小于10块的文件,注意-号表示小于,一块等于512b
/home/zhangy/download
/home/zhangy/download/fix-crash-in-excerpts.patch
/home/zhangy/download/test.sql.zip
g,根文件的修改时间来查找
代码如下:
[zhangy@BlackGhost download]$ find/home/zhangy-mtime-5-print#5天修改过的文件,-表示以内
/home/zhangy/www/css2/c_textshadow.html
/home/zhangy/www/css2/c_textautospace.html
[zhangy@BlackGhost download]$ find/home/zhangy-mtime+5-print#查找5天前修改过的文件,+表示以前
/home/zhangy/www/test.php
[root@vmx14420 www]# find./-mmin-5-print#查找5分钟以内修改过的文件
./cache/index.html
h,exec解释
代码如下:
[zhangy@BlackGhost download]$ find.-type f-size+1000000c-exec ls-al{};#显示当前目录下面所有大于1000000的文件,exec后面执行了一个命令,{}这个代表文件名
-rw-r--r-- 1 zhangy users 3624960 2009-03-08./eaccelerator-0.9.5.3.tar
-rw-r--r-- 1 zhangy users 3091711 12-18 13:48./mmseg-0.7.3.tar.gz
-rw-r--r-- 1 zhangy users 1191330 2009-06-26./pcre-7.9.tar.gz
i,匹配
代码如下:
[tank@localhost workspace]$ find./database/-name'*.sql'-print#查找以sql结尾的文件
./database/28toplearning.sql
[tank@localhost workspace]$ find./database/-name'*.sql*'-print#查找文件名包括sql文件
./database/28toplearning.sql
[tank@localhost workspace]$ find./database/-name'28*'-print#查找以28开头的文件
./database/28toplearning.sql
locate
用法: locate [OPTION]... [PATTERN]...
在mlocate数据库中搜索条目.
-b,--basename匹配唯一的路径名称的基本文件名
-c,--count只显示找到条目的号码
-d,--database DBPATH用 DBPATH替代默认的数据库(/var/lib/mlocate/mlocate.db)
-e,--existing只显示当前存在的文件条目
-L,--follow当文件存在时跟随蔓延的符号链接(默认)
-h,--help显示本帮助
-i,--ignore-case匹配模式时忽略大小写区别
-l,--limit,-n LIMIT限制为 LIMIT项目的输出(或计数)
-m,--mmap忽略向后兼容性
-P,--nofollow,-H当检查文件时不跟随蔓延的符号链接
-0,--null输出时以 NUL分隔项目
-S,--statistics不搜索项目,显示有关每个已用数据库的统计信息
-q,--quiet不报告关于读取数据库的错误消息
-r,--regexp REGEXP搜索基本正则表达式 REGEXP来代替模式
--regex模式是扩展正则表达式
-s,--stdio忽略向后兼容性
-V,--version显示版本信息
-w,--wholename匹配完整路径名(默认)
例:
代码如下:
[root@localhost~]# locate~/install#查找当前目录下以install开头的文件
/root/install.log
/root/install.log.syslog
[root@localhost~]# locate-i~/install#查找当前目录下以install开头的文件,不区分大小写
/root/install.log
/root/install.log.syslog
[root@localhost~]# locate-i/etc/fuc#查找/etc目录下面以fuc开头的文件,不区分大小写