Linux每天学习一个命令之find命令三

415 查看

find [path] [option] [action]

跟文件名及权限有关的命令

-name name:查找文件名为name的文件

-size [-+]size:查找文件大小比size大或比size小的文件

-type type:根据文件类型进行查找,参数选项有:① f : 正规文件;② l : 连接文件;③ d : 目录文件; ④ s : socket文件; ⑤ b,c : 块文件

-perm +mode:根据权限值mode进行查找+mode表示包含mode权限值的文件都会被查找出来

-perm /mode:在centos7的版本下测试使用的是这个命令,在其他比较老的版本里面使用-perm -mode命令,其表示全部包括mode权限值的文件都会被查找出来,比如输入的权限为-rwxr-x--x,则只要包含上面权限的任意一个都会被列出来比如权限为-rw------的文件也会被列出来

-perm mode:表示权限值完全等于mode文件才会被查找出来

下面来看看一些例子:

例子一:查看/etc/目录下文件名为passwd的文件

[root@localhost ~]# find /etc/ -name passwd
/etc/passwd
/etc/pam.d/passwd

例子二:查看/etc/目录下文件类型为链接(l)的文件

[root@localhost ~]# find /etc/ -type l
/etc/mtab
/etc/fonts/conf.d/65-0-madan.conf
/etc/fonts/conf.d/59-liberation-mono.conf
/etc/fonts/conf.d/65-0-lohit-kannada.conf

例子三:查看/etc/目录下文件大小为2k的文件

[root@localhost ~]# find /etc/ -size "2k"
/etc/fonts/conf.d/25-no-bitmap-fedora.conf
/etc/X11/xinit/xinitrc
/etc/X11/xinit/xinitrc-common
/etc/X11/xinit/xinput.d/xim.conf
/etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
/etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-Testing-7

例子四:查看/bin/目录下有SUID,SGID,SBIT权限的文件件

[root@localhost ~]# find /bin/ -perm /7000
/bin/fusermount
/bin/wall
/bin/chfn
/bin/chsh
/bin/mount
/bin/su

这些命令不是只能单独的使用参数,可以一条命令中使用多个参数,比如下面的命令:

[root@localhost ~]# find /etc/ -type l -name "s*"
/etc/system-release
/etc/systemd/system/multi-user.target.wants/sshd.service
/etc/systemd/system/multi-user.target.wants/sysstat.service
/etc/systemd/system/multi-user.target.wants/smartd.service
/etc/systemd/system/default.target.wants/systemd-readahead-replay.service
/etc/systemd/system/default.target.wants/systemd-readahead-collect.service
/etc/systemd/system/system-update.target.wants/systemd-readahead-drop.service
/etc/systemd/system/spice-vdagentd.target.wants/spice-vdagentd.service

find命令还可进行其他的操作:

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

-exec command :command为其他命令,-exec后面可以接其他的命令进行处理前面find命令查询到的结果,使用方式是command {} \;值得注意的是:首先{}代表的是前面find命令查找到的结果,其次{} 和\之间是有空格的,如果没有会提示如下的错误,最后是{}的位置不是一定的,根据command可以调整位置
find: 遗漏“-exec”的参数

-ok:与-exec的作用相同,只是-ok会以更安全的方式进行command命令,即每执行一个命令就会询问用户是否要执行,让用户来选择

-print:将结果打印输出到屏幕上

例子五:查找并赋值/etc/目录及其子目录中所有以c开始的普通文件到用户主目录中的tmp/bv中

[root@localhost ~]# find /etc/ -type f -name "c*" -exec cp {} /root/tmp/bv/ \;

例子六:删除ab中的所有符号链接文件

[root@localhost ~]# find /tmp/ -type l -exec rm -rf {} \;

以上是find命令的用法,find命令是直接从磁盘上进行查找,所以会很慢,find [path] [option] [action] [-exec -ok command] {} \;基本上可以做任何事。