shell编程四剑客之find

shell编程四剑客之find:

  • 在Shell编程工具中,四剑客工具的使用更加的广泛,Shell编程四剑客包括:find、sed、grep、awk,熟练掌握四剑客会对Shell编程能力极大的提升。
  • 四剑客之Find工具实战,Find工具主要用于操作系统文件、目录的查找,其语法参数格式为
find   path   -option   [   -print ]   [ -exec   -ok   command ]   { }  \;

option常用参数详解如下:

  • -name filename #查找名为filename的文件;

例:
[root@localhost ~]# find /etc/ -name passwd  ---查找/etc/下名为passwd的文件
/etc/passwd
/etc/pam.d/passwd
  • -type b/d/c/p/l/f #查是(b)块设备、(d)目录、©字符设备、§管道、(l)符号链接、(f)普通文件;
例1:
[root@localhost ~]# find /dev/ -type b   --查找/dev/下块设备文件
/dev/dm-1
/dev/dm-0
/dev/sr0
/dev/sda2
/dev/sda1
/dev/sda
[root@localhost ~]# ls -l /dev/dm-1 
brw-rw----. 1 root disk 253, 1 7月  26 15:14 /dev/dm-1
例2:
[root@localhost ~]# find /root -type d --查找/root下所有目录包含/root
/root
[root@localhost ~]# ll -d /root 
dr-xr-x---. 2 root root 4096 7月  25 22:58 /root
例3:
[root@localhost ~]# find /dev/ -type c  查找/dev/下所有字符设备文件
/dev/vsock
/dev/vcsa6
[root@localhost ~]# ll -d /dev/vsock 
crw-------. 1 root root 10, 56 7月  26 15:14 /dev/vsock
例4:
[root@localhost ~]# find / -type p 查找/下所有管道文件
/run/dmeventd-client
/run/dmeventd-server
[root@localhost ~]# ll -d /run/dmeventd-client 
prw-------. 1 root root 0 7月  26 15:14 /run/dmeventd-client
例5:
[root@localhost ~]# find /usr/share/man/ -type l  ---查找/usr/share/man/下所有符号链接的文件
/usr/share/man/man1/xzegrep.1.gz
/usr/share/man/man1/xzfgrep.1.gz
[root@localhost ~]# ll -d /usr/share/man/man1/xzegrep.1.gz 
lrwxrwxrwx. 1 root root 11 2月  14 03:21 /usr/share/man/man1/xzegrep.1.gz -> xzgrep.1.gz
例6:
[root@localhost ~]# find /root -type f  查找/root/下所有普通文件
/root/test.txt
[root@localhost ~]# ll -d /root/test.txt 
-rw-r--r--. 1 root root 11 7月  25 21:42 /root/test.txt

-size +容量 | -容量 #按容量大小查找

例1:
[root@localhost ~]# find /usr/src/ -size +1M  查找在/usr/src/下大于1M的文件
/usr/src/apache-tomcat-9.0.36.tar.gz
/usr/src/nginx-1.16.1/objs/nginx
/usr/src/nginx-1.16.0/objs/nginx
/usr/src/nginx-1.18.0/objs/nginx
[root@localhost ~]# du -sh /usr/src/apache-tomcat-9.0.36.tar.gz 
11M	/usr/src/apache-tomcat-9.0.36.tar.gz
例2:
[root@localhost ~]# find /usr/src/ -size +1M -size -15M   查找/usr/src/下大于1M小于15M的文件
/usr/src/apache-tomcat-9.0.36.tar.gz

-perm #按执行权限来查找;

例:
[root@localhost ~]# find /root/ -perm 644 -type f  查找/root/下权限为644并且是普通文件
/root/test1.sh
[root@localhost ~]# ll -d /root/test1.sh 
-rw-r--r--. 1 root root 1161 7月  21 16:47 /root/test1.sh
提示:r=4,w=2,x=1
  • -user username #按文件属主来查找
  • group greoupname #按组来查找
[root@localhost ~]# find / -user ys -group ys  查找/下所有数组属主为ys的文件或目录
/home/ys
[root@localhost ~]# ll -d /home/ys
drwx------. 3 ys ys 86 2月  14 04:09 /home/ys

-mtime -n +n #按文件更改时间来查找文件,-n指n天以内,+n指n天以前;
-atime -n +n #按文件访问时间来查找文件;
-ctime -n +n #按文件创建时间来查找文件;

[root@localhost ~]# find /root/ -mtime -1  ---查找/root下一天内更改过的文件或目录
/root/test.txt
[root@localhost ~]# stat /root/test.txt 
  文件:"/root/test.txt"
  大小:11        	块:8          IO 块:4096   普通文件
设备:fd00h/64768d	Inode:33617265    硬链接:1
权限:(0644/-rw-r--r--)  Uid:(    0/    root)   Gid:(    0/    root)
环境:unconfined_u:object_r:admin_home_t:s0
最近访问:2020-07-25 21:42:27.038601276 +0800
最近更改:2020-07-25 21:42:22.116571971 +0800
最近改动:2020-07-25 21:42:22.116571971 +0800
创建时间:-

mmin -n +n #按文件更改时间来查找文件,-n指n分钟以内,+n指n分钟以前;
-amin -n +n #按文件访问时间来查找文件;
-cmin -n +n #按文件创建时间来查找文件;

例:
[root@localhost ~]# touch ys.txt
[root@localhost ~]# find /root -mmin -1 -type f   查找/root下更改时间在一分钟之内的普通文件
/root/ys.txt
[root@localhost ~]# stat /root/ys.txt 
  文件:"/root/ys.txt"
  大小:0         	块:0          IO 块:4096   普通空文件
设备:fd00h/64768d	Inode:33582685    硬链接:1
权限:(0644/-rw-r--r--)  Uid:(    0/    root)   Gid:(    0/    root)
环境:unconfined_u:object_r:admin_home_t:s0
最近访问:2020-07-26 16:16:27.168400745 +0800
最近更改:2020-07-26 16:16:27.168400745 +0800
最近改动:2020-07-26 16:16:27.168400745 +0800
创建时间:-
###可以看得出来/root/ys.txt这个文件访问时间和更改和改动一样
[root@localhost ~]# echo aaa> ys.txt 
[root@localhost ~]# stat /root/ys.txt 
  文件:"/root/ys.txt"
  大小:4         	块:8          IO 块:4096   普通文件
设备:fd00h/64768d	Inode:33582685    硬链接:1
权限:(0644/-rw-r--r--)  Uid:(    0/    root)   Gid:(    0/    root)
环境:unconfined_u:object_r:admin_home_t:s0
最近访问:2020-07-26 16:16:27.168400745 +0800
最近更改:2020-07-26 16:20:35.109956774 +0800
最近改动:2020-07-26 16:20:35.109956774 +0800
创建时间:-
###现在就有变化了
[root@localhost ~]# find /root -amin -4 -type f   查看/root下访问时间是在4分钟之内的普通文件
可以看得出来没有差的出来
[root@localhost ~]# cat ys.txt 访问一下 /root/ys.txt这个文件
aaa
再次查找就出来了
[root@localhost ~]# find /root -amin -4 -type f
/root/ys.txt

1. find工具-name参数案例:

[root@localhost ~]# find /root/ -name "*.txt"   ---查找/root下以.txt结尾的文件
[root@localhost ~]# find /root -name "[a-Z]*"   ---查找/root下以a-Z开头的文件或者目录
[root@localhost ~]# find /root/ -name "test*"  ---查找/root下以test开头的文件

2. Find工具-type参数案列:

[root@localhost ~]# find /usr/ -type d    ---查找/usr/下所有文件夹
[root@localhost ~]# find /usr/ ! -type d   ---查找/usr/下所有非文件夹
[root@localhost ~]# find  /usr/ -type d | xargs chmod -R 755    ---查找/usr/下的所有目录并设置为755权限
或者:
[root@localhost ~]# find  /usr/  -type d -exec chmod -R 755 {}\;

3. Find工具-size参数案列:

[root@localhost ~]# find   /data/    -size   +1M              #查文件大小大于1Mb的文件;
[root@localhost ~]# find   /data/    -size   10M            	#查文件大小为10M的文件;
[root@localhost ~]# find   /data/    -size   -1M            	#查文件大小小于1Mb的文件;

4. Find工具参数综合案列

#查找/data目录以.log结尾,30天以前的文件,大小大于10M并移动到/tmp目录;
[root@localhost ~]# find /data/ -name "*.log" -type f  -mtime +30 -siz +10M -exec mv  {} /tmp/ \;
#查找/data目录以.log结尾,文件大于10k的文件,同时cp到/tmp目录;
[root@localhost ~]# find /data/ -name "*.log" -type f -size 10k -exec cp -a {} /tmp/ \;
#查找/data目录以.txt结尾,文件大于10k的文件,权限为644并删除该文件;
[root@localhost ~]# find /data/ -name "*.txt" -type f -size +10k -perm 644 | xargs rm -rf
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值