Find命令用法

Linux find命令用来在指定目录下查找文件。

使用格式

 find  [指定查找目录]  [查找规则]  [查找完后执行的action]

举例

  • 指定查找目录
[root@VM-Sonar-104 ssh]# find /etc/ssh  /usr/local/sonarqube/bin/linux-x86-64/
/etc/ssh
/etc/ssh/ssh_config
/etc/ssh/ssh_host_key
/etc/ssh/sshd_config
/etc/ssh/ssh_host_dsa_key
/etc/ssh/ssh_host_dsa_key.pub
/etc/ssh/ssh_host_key.pub
/etc/ssh/ssh_host_rsa_key.pub
/etc/ssh/moduli
/etc/ssh/ssh_host_rsa_key
/usr/local/sonarqube/bin/linux-x86-64/
/usr/local/sonarqube/bin/linux-x86-64/sonar.sh
/usr/local/sonarqube/bin/linux-x86-64/SonarQube.pid
/usr/local/sonarqube/bin/linux-x86-64/wrapper
/usr/local/sonarqube/bin/linux-x86-64/lib
/usr/local/sonarqube/bin/linux-x86-64/lib/libwrapper.so

这里要注意的是目录之间要用空格分开

  • 指定查找规则

a.根据文件名查找,精确查找

[root@VM-Sonar-104 ssh]# find /etc/ssh -name ssh_config
/etc/ssh/ssh_config

b.根据文件名查找,但不区分大小写

[root@VM-Sonar-104 ssh]# find /etc/ssh -iname ssh_config
/etc/ssh/ssh_config

c.根据文件所属用户和所属组来查找文件

[root@VM-Sonar-104 ssh]# find /etc/ssh -user root
/etc/ssh
/etc/ssh/ssh_config
/etc/ssh/ssh_host_key
/etc/ssh/sshd_config
/etc/ssh/ssh_host_dsa_key
/etc/ssh/ssh_host_dsa_key.pub
/etc/ssh/ssh_host_key.pub
/etc/ssh/ssh_host_rsa_key.pub
/etc/ssh/moduli
/etc/ssh/ssh_host_rsa_key

d.根据文件时间戳的相关属性来查找文件
我们可以使用stat命令来查看一个文件的时间信息如下:

[root@VM-Sonar-104 ssh]# stat /etc/ssh
  File: `/etc/ssh'
  Size: 4096        Blocks: 8          IO Block: 4096   directory
Device: 803h/2051d  Inode: 12059408    Links: 2
Access: (0755/drwxr-xr-x)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2018-08-21 15:00:04.353831471 +0800
Modify: 2017-12-01 14:19:49.535425401 +0800
Change: 2017-12-01 14:19:49.535425401 +0800

查找五天内没有访问过的文件

[root@VM-Sonar-104 ssh]# find ./ -atime +5

查找五天内访问过的文件

[root@VM-Sonar-104 ssh]# find ./ -atime -5

时间戳:

Find命令用法_第1张图片

e.根据文件类型来查找文件,加参数-type

[root@VM-Sonar-104 ssh]# find /usr/test -type d
[root@VM-Sonar-104 ssh]# find /usr/test  -d
//f     普通文件
//d     目录文件
//l     链接文件
//b     块设备文件
//c     字符设备文件
//p     管道文件
//s     socket文件

f.根据大小来查找文件-size

[root@VM-Sonar-104 ssh]#find  /tmp  -size   2M //查找在/tmp目录下等于2M的文件

g.根据文件权限查找文件-perm

[root@VM-Sonar-104 ssh]#find  /tmp  -perm  755  //查找在/tmp目录下权限是755的文件
  • 查找完执行的action
[root@VM-Sonar-104 ssh]# find ./ -atime -5 -print //-print默认情况下的动作
[root@VM-Sonar-104 ssh]# find ./ -atime -5 -ls //-ls查找到后用ls显示出来

删除5天之前的文件和目录,执行命令时先询问

[root@VM-Sonar-104 ssh]# find /Users/test -mtime +5 -name "*" -ok rm -rf {} \;//-ok [commend]查找后执行命令的时候询问用户是否要执行

删除5天之前的文件和目录,执行命令时不用询问

[root@VM-Sonar-104 ssh]# find /Users/test -mtime +5 -name "*" -exec rm -rf {} \; //-exec查找后执行命令的时候不询问用户直接执行

注:用{}来替代查找到的文件,;表示使用-exec的结束符,是固定格式。

实践
我们在用jenkins做持续集成时,要删除checkout 的.svn文件时,就可以用find命令来处理。具体命令如下:

find ${WORKSPACE} -type d -name ".svn"|xargs rm -rf

注:xargs可以把从 stdin 接受到的输入,用空白符分隔开,然后依次作为参数去调用xargs后面的命令。

你可能感兴趣的:(Find命令用法)