您的位置:首页 > 系统 find命令简述
站内搜索

find命令简述

原帖及讨论:http://bbs.bccn.net/thread-210146-1-1.html

在系统管理中find命令无疑是一个功能很强大的命令.这里我只做一些常用的简单的介绍,就当抛砖引玉吧.其它的参数的作用,相信大家都可以通过以后的学习和摸索来慢慢的进行了解.

0.文件准备
[root@localhost example]# tree
.
|-- example1.conf
|-- example2.conf
|-- find命令详解.txt
|-- subexample1
|   `-- example1.conf
`-- subexample2
    `-- example1.conf

2 directories, 5 files
[root@localhost example]# ls -l #注意example1.conf与example2.conf文件的属主和权限不同,参考ls l命令
总计 40
-rw-rw-rw-     1    root       gxlinux 53     04-19 15:01 example1.conf
-rw-rw-r--     1    gxlinux    gxlinux 0      04-19 14:57 example2.conf
-rw-rw-r--     1    gxlinux    gxlinux 972    04-19 16:41 find命令详解.txt
drwxrwxr-x     2    gxlinux    gxlinux 4096   04-19 15:07 subexample1
drwxrwxr-x     2    gxlinux    gxlinux 4096   04-19 15:07 subexample2
[root@localhost example]# cat example1.conf
Linux
        Fedora
        Redhat
        CentOS
DataBase
        MySQL
        MSSQL
# . -表示当前目录(点号表示当前目录)

1.type参数
[root@localhost example]# find . -type d #查找目录
.
./subexample1
./subexample2
[root@localhost example]# find . -type f #查找普通文件
./example1.conf
./subexample1/example1.conf
./example2.conf
./subexample2/example1.conf
#b-块设备文件 c-字符设备文件 p-管道文件 l-符号链接文件

2.user参数
[root@localhost example]# find . -user root #查找当前目录下属主为root的文件或目录
./example1.conf
#同理group参数,表示按照所属的组来查找

3.perm参数
[root@localhost example]# find . -perm 666 #查找权限为rw-rw-rw-的文件或目录
#r、w、x分别表示4、2、1,rw-相加得6
./example1.conf

4.name参数
[root@localhost example]# find . -name "example1*"#查找文件名以example1开头的文件或目录(*是正则表达式,匹配任意个字符,下面的[1-2]匹配1到2,参考正则表达式)
./example1.conf
./subexample1/example1.conf
./subexample2/example1.conf
[root@localhost example]# find . -name "example[1-2]*"
./example1.conf
./subexample1/example1.conf
./example2.conf
./subexample2/example1.conf

5.size参数
[root@localhost example]# find . -size +50c -type f #查找大于50字节的普通文件
./example1.conf
./find命令详解.txt
[root@localhost example]# find . -size -50c -type f #查找小于50字节的普通文件
./subexample1/example1.conf
./example2.conf
./subexample2/example1.conf

6.prune与path参数
[root@localhost example]# find . -path ./subexample1 -prune -o print #查找不在./subexample1目录下的文件或目录
.
./find命令详解.txt
./example1.conf
./example2.conf
./subexample2
./subexample2/example1.conf
# -o表示||(或) -a表示&&(与)
[root@localhost example]# find . -path ./subexample1 -o -name "example2*" -prune -o print #查找不在./subexample1目录下或者不以example2开头的文件或目录
.
./find命令详解.txt
./example1.conf
./subexample1/example1.conf
./subexample2
./subexample2/example1.conf
[root@localhost example]# find . /( -path ./subexample1 -o -path ./subexample2 /) -prune -o -print
.
./find命令详解.txt
./example1.conf
./example2.conf

7.mtime参数
[root@localhost example]# find . -mtime +1 -type d #查找1天前修改的文件,n天改写为n即可
[root@localhost example]# find . -mtime -1 -type d #查找1天内修改的文件
.
./subexample1
./subexample2
# -mmin n查找系统中最后N分钟被改变文件数据的文件
# -amin n查找系统中最后N分钟访问的文件
# -cmin n查找系统中最后N分钟被改变文件状态的文件
#####
# -mtime n查找系统中最后N天被改变文件数据的文件
# -atime n查找系统中最后N天被访问的文件
# -ctime n查找系统中最后N天被改变文件状态的文件

8.ok与exec参数
[root@localhost example]# find . -type f -size 0 -ok rm {} /; #查找大小为0的普通文件并删除它
#格式:-ok参数后写shell命令,注意{}与/;之间有一个空格
< rm ... ./subexample1/example1.conf > ? n
< rm ... ./example2.conf > ? n
< rm ... ./subexample2/example1.conf > ? n
[root@localhost example]# find . -name "example1*" -ok grep "Fed" {} /; #查找以example1开头的文件,然后用grep命令看看这些文件中是否有”Fed”字符,并且给出提示(删除文件时有用)
< grep ... ./example1.conf > ? y
        Fedora
< grep ... ./subexample1/example1.conf > ? y
< grep ... ./subexample2/example1.conf > ? y
[root@localhost example]# find . -name "example1*" -exec grep "Fed" {} /; #同上,但是不给出提示,直接执行,删除文件时小心
        Fedora

9.xargs命令
[root@localhost example]# find . -name "example1*" | xargs grep "Fed"
./example1.conf:        Fedora
[root@localhost example]# find . -name "example1*"|xargs echo ""  > 1.log #查找文件,并将查找结果写入日志文件中
[root@localhost example]# cat 1.log
./example1.conf ./subexample1/example1.conf ./subexample2/example1.conf
(xargs命令同exec参数,建议使用该命令,因为它是分批执行,而exec是将find 查找到的所有结果一次执行,结果过大会出现错误)

 

  • 上一篇:vim初级使用(命令介绍)
  • 下一篇:Sed编辑器