[root@localhost ~]# find 搜索路径 [选项] 搜索内容
find 是比较特殊的命令,它有两个参数:[root@localhost ~]#find 搜索路径 [选项] 搜索内容
选项:
[root@localhost ~]# find /-name yum.conf
/etc/yum.conf
#在目录下査找文件名是yum.conf的文件
[root@localhost ~]# touch yum.conf.bak
#在/root/目录下建立一个文件yum.conf.bak
[root@localhost ~]# find /-name yum.conf
/etc/yum.conf
#搜索只能找到yum.conf文件,而不能找到 yum.conf.bak 文件
[root@localhost ~]# touch CANGLS
[root@localhost ~]# touch cangls
#建立大写和小写文件
[root@localhost ~]#find.-iname cangls
./CANGLS
./cangls
#使用-iname,大小写文件通吃
[root@localhost ~]#ls -i install.log
262147 install.log
#如果知道文件名,则可以用"ls -i"来査找inode号
[root@localhost ~]# find.-inum 262147
./install.log
#如果知道inode号,则可以用find命令来査找文件
[root@localhost ~]# ln /root/install.log /tmp/
#给install.log文件创建一个硬链接文件
[root@localhost ~]#ll -i /root/install.log /tmp/install.log
262147 -rw-r--r--.2 root root 24772 1 月 14 2014/root/
install.log
262147 -rw-r--r--.2 root root 24772 1 月 14 2014/tmp/
install.log
#可以看到这两个硬链接文件的inode号是一致的
[root@localhost ~]# find /-inum 262147
/root/install.log
/tmp/install.log
#如果硬链接不是我们自己建立的,则可以通过find命令搜索inode号,来确定硬链接文件
[root@localhost ~]#find 搜索路径 [选项] 搜索内容
选项:
[root@localhost ~]# ll -h install.log
-rw-r--r--.1 root root 25K 1月 14 2014 install.log #在当前目录下有一个大小是25KB的文件
[root@localhost ~]#
[root@localhost ~]# find.-size 25k
./install.log
#当前目录下,査找大小刚好是25KB的文件,可以找到
[root@localhost ~]# find .-size -25k
.
./.bashrc
./.viminfo
./.tcshrc
./.pearrc
./anaconda-ks.cfg
./test2
./.ssh
./.bash_history
./.lesshst
./.bash_profile
./yum.conf.bak
./.bashjogout
./install.log.syslog
./.cshrc
./cangls
#搜索小于25KB的文件,可以找到很多文件
[root@localhost ~]# find.-size +25k
#而当前目录下没有大于25KB的文件
[root@localhost ~]# find.-size -25m
find:无效的-size类型"m"
#为什么会报错呢?其实是因为如果按照MB来搜索,则必须是大写的M
[root@localhost ~]# ll anaconda-ks.cfg
-rw-------.1 root root 1207 1 月 14 2014 anaconda-ks.cfg
#anaconda-ks.cfg文件有1207字芳
[root@localhost ~]# find.-size 1207
#但用find查找1207,是什么也找不到的
[root@localhost ~]# man find
-size n[cwbkMG]
File uses n units of space. The following suffixes can be used:
'b' for 512-byte blocks (this is the default if no suffix is used)
#这是默认单位,如果单位为b或不写单位,则按照 512Byte搜索
'c' for bytes
#搜索单位是c,按照字节搜索
'w' for two-byte words
#搜索单位是w,按照双字节(中文)搜索
'k'for Kilobytes (units of 1024 bytes)
#按照KB单位搜索,必须是小写的k
'M' for Megabytes (units of 1048576 bytes)
#按照MB单位搜索,必须是大写的M
'G' for Gigabytes (units of 1073741824 bytes)
#按照GB单位搜索,必须是大写的G
[root@localhost ~]# find.-size 1207c
./anaconda-ks.cfg
#使用搜索单位c,才会按照字节搜索
[root@localhost ~]# find搜索路径 [选项] 搜索内容
选项:
[root@localhost ~]#find.-mtime -5
#查找5天内修改的文件
[root@localhost ~]# find 搜索路径 [选项] 搜索内容
选项:
[root@localhost ~]# mkdir test
[root@localhost ~]# cd test/
[root@localhost test]# touch testl
[root@localhost test]# touch test2
[root@localhost test]# touch test3
[root@localhost test]# touch test4
#建立测试目录,以及测试文件
[root@localhost test]# chmod 755 testl
[root@localhost test]# chmod 444 test2
[root@localhost test]# chmod 600 test3
[root@localhost test]# chmod 200 test4
#设定实验权限。因为是实验权限,所以看起来比较别扭
[root@localhost test]# ll
总用量0
-rwxr-xr-x 1 root root 0 6月 17 11:05 testl -r--r--r-- 1 root root 0 6月 17 11:05 test2
-rw------- 1 root root 0 6月 17 11:05 test3
-w------- 1 root root 0 6月 17 11:05 test4
#查看权限
[root@localhost test]#find.-perm 444
./test2
[root@localhost test]#find.-perm 200
./test4
#按照指定权限搜索文件,文件的权限必须和搜索指定的权限一致,才能找到
[root@localhost test]#find .-perm -200
./test4 <-此文件权限为200
./test3 <-此文件权限为600
./testl <-此文件权限为755
#搜索文件的权限包含200的文件,不会找到test2文件,因为test2的权限为444,不包含200权限
[root@localhost test]# find .-perm -444
.
./test2 <-此文件权限为444
./test1 <-此文件权限为755
#搜索文件的权限包含444的文件
[root@localhost test]# find .-perm +444
./test4 <-此文件权限为200
./test3 <-此文件权限为600
./testl <-此文件权限为755
#搜索文件的权限包含200的文件,不会找到test2文件,因为test2的权限为444,不包含200权限。
[root@localhost ~]# find 搜索路径 [选项] 搜索内容
选项:
[root@localhost ~]#find.-user root
#在当前目录中査找所有者是 root 的文件
[root@localhost ~]# find/-nouser
[root@localhost ~]# find 搜索路径 [选项] 搜索内容
选项:
[root@localhost ~]# find /etc -type d
#查找/etc/目录下有哪些子目录
[root@localhost ~]#find 搜索路径 [选项] 搜索内容
选项:
[root@localhost ~]# find.-size +2k -a -type f
#在当前目录下搜索大于2KB,并且文件类型是普通文件的文件
[root@localhost ~]# find.-mtime -3 -a -perm 644
#在当前目录下搜索3天以内修改过,并且权限是644的文件
[root@localhost ~]#find.-name cangls -o -name bols
./cangls
./bols
#在当前目录下搜索文件名要么是cangls的文件,要么是bols的文件
-not是逻辑非,也就是取反的意思。举个例子:
[root@localhost ~]# find.-not -name cangls
#在当前目录下搜索文件名不是cangls的文件
[root@localhost ~]# find 搜索路径 [选项] 搜索内容 -exec 命令2{}\;
首先,请大家注意这里的"{}"和"\;"是标准格式,只要执行"-exec"选项,这两个符号必须完整输入。
[root@localhost test]#find.-perm 444
./test2
[root@localhost test]# find.-perm 444 -exec ls -l {}\;
-r--r--r-- 1 root root 0 6月 17 11:05 ./test2
#使用"-exec"选项,把find命令的结果直接交给"ls -l"命令处理
[root@localhost test]# find .-perm 444 -ok rm -rf{}\;
<rm…./test2>?y <-需要用户输入y,才会执行
#我们这次使用rm命令来删除find找到的结果,删除的动作最好确认一下
Copyright © 广州京杭网络科技有限公司 2005-2024 版权所有 粤ICP备16019765号
广州京杭网络科技有限公司 版权所有