zl程序教程

您现在的位置是:首页 >  后端

当前栏目

Shell find 实例

2023-09-14 09:01:47 时间

在Shell编程工具中,四剑客工具的使用更加的广泛,Shell编程四剑客包括:find、sed、grep、awk,熟练掌握四剑客会对Shell编程能力极大的提升。

四剑客之Find工具实战,Find工具主要用于操作系统文件、目录的查找,其语法参数格式为:

find   path   -option   [   -print ]   [ -exec   -ok   command ]   { }  \;
-name   filename    			#查找名为filename的文件;
-type    b/d/c/p/l/f			    #查是块设备、目录、字符设备、管道、符号链接、普通文件;
-size      n[c]     			#查长度为n块[或n字节]的文件;
-perm               			#按执行权限来查找;
-user    username   			#按文件属主来查找;
-group   groupname  			#按组来查找;
-mtime    -n +n     			#按文件更改时间来查找文件,-n指n天以内,+n指n天以前;
-atime    -n +n     			    #按文件访问时间来查找文件;


-ctime    -n +n     			    #按文件创建时间来查找文件;
-mmin     -n +n     			    #按文件更改时间来查找文件,-n指n分钟以内,+n指n分钟以前;
-amin     -n +n     			    #按文件访问时间来查找文件;
-cmin     -n +n     			    #按文件创建时间来查找文件;
-maxdepth						#查找目录级别深度。

 

 

Find工具-name参数案列

# find . -type f -name "linuxprobe.txt" -exec rm -f {} \;
find   /data/    -name   "*.txt"     		#查找/data/目录以.txt结尾的文件;
find   /data/    -name   "[A-Z]*"    		#查找/data/目录以大写字母开头的文件;
find   /data/    -name   "test*"     		#查找/data/目录以test开头的文件;

使用!来过滤不想要的结果 

[root@www ~]# find / -name "zlib*.rpm"
/mnt/dvd/Packages/zlib-1.2.7-17.el7.x86_64.rpm
/mnt/dvd/Packages/zlib-devel-1.2.7-17.el7.x86_64.rpm
[root@www ~]# find / -name "zlib*.rpm" ! -name "zlib-devel*"
/mnt/dvd/Packages/zlib-1.2.7-17.el7.x86_64.rpm

在当前目录查找文件使用的名字

在当前目录下,查找所有名称为linuxprobe.txt的文件

# find . -name linuxprobe.txt ./linuxprobe.txt

在home目录下查找文件

查找home目录下所有文件名为linuxprobe.txt的文件

# find /home -name linuxprobe.txt /home/linuxprobe.txt

查找文件忽略文件名的大小写

在特定目录下查找名称为linuxprobe.txt的文件,忽略文件名大小写

# find /home -iname linuxprobe.txt ./linuxprobe.txt ./Linuxprobe.txt

查找特定的目录

根目录下查找目录名为linuxprobe的目录

# find / -type d -name linuxprobe /linuxprobe

查找指定目录下的php文件

查找当前目录下的名为linuxprobe.php的文件

# find . -type f -name linuxprobe.php ./linuxprobe.php

查找指定目录下的所有PHP文件

# find . -type f -name "*.php" ./linuxprobe.php ./login.php ./index.php

​​​​​​​

Find工具-type参数案列

find   /data/    -type d    #查找/data/目录下的文件夹;

find   /data/    !   -type   d     #查找/data/目录下的非文件夹;

find   /data/    -type  l    #查找/data/目录下的链接文件。

find  /data/ -type d|xargs chmod 755 -R #查目录类型并将权限设置为755;

find  /data/ -type f|xargs chmod 644 -R #查文件类型并将权限设置为644;

 

 

 Find工具-size参数案列

find   /data/    -size   +1M              #查文件大小大于1Mb的文件;

find   /data/    -size   10M             #查文件大小为10M的文件;

find   /data/    -size   -1M             #查文件大小小于1Mb的文件;

查找到文件大小为100M的文件并删除 

# find / -size +100M -exec rm -rf {} \;

查找文件类型为mp3格式并且大小为100M的文件,然后删除 

# find / -type f -name *.mp3 -size +10M -exec rm {} \; #常用find操作,通过find出指定目录下的特定类型特定名称的文件,然后进行修改,移动,删除等操作。

查找大小为50M的文件

# find / -size 50M

查找文件大小在50M-100M之间的文件

# find / -size +50M -size -100M

 

Find工具-mtime参数案列

atime,access time  	文件被读取或者执行的时间;
ctime,change time  	文件状态改变时间;
mtime,modify time  	文件内容被修改的时间;

find /data/ -mtime +30 	-name 	"*.log"  #查找30天以前的log文件;
find /data/ -mtime -30 	-name 	"*.txt"  	#查找30天以内的log文件;
find /data/ -mtime 30 	-name  	"*.txt"	#查找第30天的log文件;
find /data/ -mmin  +30	-name  	"*.log"  #查找30分钟以前修改的log文件;
find /data/ -amin  -30 	-name  	"*.txt"  	#查找30分钟以内被访问的log文件;
find /data/ -cmin  30 	-name  	"*.txt"	#查找第30分钟改变的log文件。

 

Find工具-perm参数案列

找到SUID文件

# find / -perm /u=s 
#find / -perm /g=s

找到只读文件

# find / -perm /u=r

找到可执行文件

# find / -perm /a=x

找到权限为777的文件并改为644

# find / -type f -perm 0777 -print -exec chmod 644 {} \;

找到权限为777的目录并改为755

# find / -type d -perm 777 -print -exec chmod 755 {} \;

 查找权限为777的文件

查找当前目录下所有权限为777的文件

# find . -type f -perm 0777 -print

查找权限不是777的文件

查找根目录下所有权限不是777的文件

# find / -type f ! -perm 777

查找权限为664的文件

# find / -perm 2644

18.找到指定类型的文件并删除

# find . -type f -name "*.txt" -exec rm -f {} \; OR # find . -type f -name "*.mp3" -exec rm -f {} \;

19.查找空文件

# find /tmp -type f -empty

20.查找空目录

# find /tmp -type d -empty

21.查找所有的隐藏文件

# find /tmp -type f -name ".*"

22.查找指定用户家目录下的指定文件

# find / -user root -name linuxprobe.txt

23.查找指定用户家目录下的所有文件

# find /home -user linuxprobe

24.查找指定组中的所有文件

# find /home -group developer

25.查找指定用户家目录下的指定文件并忽略大小写

# find /home -user linuxprobe -iname "*.txt"

26.查找最近50天修改过的文件

# find / -mtime 50

27.查找最近50天被访问过的文件

# find / -atime 50

28.查找最近50天到100天之间修改过的文件

# find / -mtime +50 –mtime -100

29.查找过去一小时内修改过的文件

# find / -cmin -60

30.查找过去一小时内修改过的文件

# find / -mmin -60

31.查找过去一小时内被访问过的文件

# find / -amin -60