shell编程四剑客之 find

find工具主要用于文件、目录的查找,find命令使用语法格式如下:

find 路径  [选项]  [ "文件名"] [-exec -ok command] '{}' \;

注意:文件名可以使用通配符、正则表达式来匹配,而且,文件名一定要用""括起来,不括起来有时候能正常执行,有效时候会报错,若果使用了大括号{},大括号也要用单引号括起来,免得被shell当做特殊字符转译了。

参数如下:

-name  filename						:搜索文件名包含filename的文件
-iname								:按文件名查找并且忽略大小写
-type b|d|c|p|l|f					:查找块设备、目录、字符设备、管道、软链接、普通文件
-empty								:查找空文件或空目录
-uid n								:搜索uid为n的文件
-size n|c							:搜索大小为n块或c字节的文件
-perm								:按权限查找
-atime n							:搜索最近n天未访问的文件
-user username						:搜索用户名为username的文件
-nouser								:查找无有效属主的文件
-group groupname		 			:按组名来查找
-nogroup							:查找无有效组的文件
-mtime -n +n						:按文件更改时间来查找,-n指n天以内,+n指n天以前
-atime -n +n						:按文件访问时间来查找,-n指n天以内,+n指n天以前
-ctime -n +n						:按文件创建时间来查找,-n指n天以内,+n指n天以前
-mmin -n +n							:按文件更改时间来查找,-n指n分钟以内,+n指n分钟以前
-amin -n +n							:按文件访问时间来查找,-n指n分钟以内,+n指n分钟以前
-cmin -n +n							:按文件创建时间来查找,-n指n分钟以内,+n指n分钟以前

atime,access time					:文件被读取、执行的时间
ctime,change time					:文件状态改变时间
mtime,modify time					:文件内容改变时间
注意:+有以前、大于的意思,-有示以内、小于的意思

-name 根据文件名查找

[root@Centos8 shell_scripy]# find ./ -name "*.sh"			#使用通配符按文件名查找

[root@Centos8 shell_scripy]# find ./ -iname "test.txt"		#根据文件名查找,不区分文件名大小写

[root@Centos8 shell_scripy]# find ./ -type d -name "test"	#查找当前目录下的目录名为test的目录

[root@Centos8 shell_scripy]# find ./ -name "[A-Z]*"			#查找当前目录下大写字母开头的文件

[root@Centos8 shell_scripy]#  find ./ -name "*.??"			#查找文件结尾是点号加两个字符的文件

-type 根据文件类型查找

[root@Centos8 shell_scripy]# find ./ -type l							#查找当前目录下的软链接文件

[root@Centos8 shell_scripy]# find ./ -type d							#查找当前目录下的目录,含自身目录

[root@Centos8 shell_scripy]# find ./ ! -type d							#查找当前目录下的非目录文件

[root@Centos8 shell_scripy]# find ./ -type d	| xargs chmod 755		#查找当前目录下的所有目录并修权限

[root@Centos8 shell_scripy]# find ./ -type  f | xargs chmod 744   		#查找当前目录下的所有普通文件并修权限

-user 、-group根据属主属组查找文件

[root@Centos8 find]# find ./ -user mysql							#查找属主是mysql的文件

[root@Centos8 find]# find ./ -group mysql							#查找属组是mysql的文件

-size 根据文件大小查找

[root@Centos8 shell_scripy]# find ~ -size +10M						#查找家目录下大于10M的文件

[root@Centos8 shell_scripy]# find ~ -size 10M						#查找家目录下大小等于10M的文件

[root@Centos8 shell_scripy]# find ~ -size -10M						#查找家目录下小于10M的文件

[root@Centos8 shell_scripy]# find ~ -size +50 -size -100M			#查找家目录下大于50M小于100M的文件

-perm 根据文件权限查找

-perm mode 参数mode 有较多中写法,可以是数字777这种的写法,也可以是字母的写法

[root@Centos8 shell_scripy]# find ./ -perm 744						#查找当前目录下权限为744的文件及目录

[root@Centos8 ~]# find ./ -type f ! -perm 777						#查找当前目录下没有777权限的普通文件

[root@Centos8 ~]# find ./  -perm 2755								#查找当前目录下具有特殊权限2755的文件或目录

[root@Centos8 ~]# find . -perm /u=w,g=w								#查找属主和属组用户都有写入权限的文件

-mtime、-atime、-mmin、-amin 按日期、时间查找

[root@Centos8 ~]# find / -type f -mtime +30							#查找30天前修改的所有普通文件

[root@Centos8 ~]# find / -type f -mtime +10 -mtime	-20				#查找最后10-20天修改的所有普通文件

[root@Centos8 shell_scripy]# find / -mtime +30 -name "*.log"		#查找30天以前的修改过log文件

[root@Centos8 shell_scripy]# find / -mtime -30 -name "*.log"		#查找30天以前修改过的log文件

[root@Centos8 shell_scripy]# find / -mtime 30 -name "*.log"			#查找第30天修改过的log文件

[root@Centos8 ~]# find ./ -mmin -60									#查找最近1小时内修改过的文件

[root@Centos8 shell_scripy]# find / -mmin +30 -name "*.log"			#查找30分钟以前修改的log文件

[root@Centos8 shell_scripy]# find / -amin +30 -name "*.log"			#查找30分钟以前被访问的log文件

[root@Centos8 shell_scripy]# find / -cmin +30 -name "*.log"			#查找第30分钟改变的log文件

先查找再执行命令

find / -mtime -30 -type f -size +10k -name "*.log" -exec mv {} /root/shell_scripy/find/test/ \;
find / -mtime -30 -type f -size +10k -name "*.log" -exec ls -l {}  \;
find / -mtime -30 -type f -size +500M -name "*.log" -exec rm -rf  {}  \;

注意:{}是必须的,最后的斜杠和冒号也是必须的,同时{}与路径要用空格,路径与斜杠也必须有空格。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值