shell 命令之 find 命令四

前面写了find 使用-type -atime(-ctime -mtime) -size等选项参数的用法,这些用法和之前的find的用法其实构成了find最经常使用到的用法。除了这些最基本的,也有一些相对比较高级的用法。
一 根据文件的访问权限查找

主要参数-perm
如查找当前路径下可以执行的文件,比如自己写的一些脚本啊,……

find . -type f -perm 755  # -perm 表示根据权限匹配,755表示具体的权限,具体含义是所有者可读可写可执行,用户组,其他可读,可执行,具体的文件权限的相关知识可以参考我的有关与文件权限的博客
二 依据所有者用户名查询

主要参数 -user
比如你是个管理员,你想查找你管辖下的某个用户的创建的文件

  find . -type f -user user1  # -user表示依据用户名匹配, user1是用户名
三 对查找到的内容直接进行操作
(1) 直接删除查找到的内容

主要参数 -delete 参数

  find . -type f -name "*.tmp" -delete # 最后的-delete选项就是起删除匹配内容的选项参数
(2) 进行更为复杂操作

前面的-delete参数可以方便的删除匹配到的内容,那么如果进行更为复杂的操作该怎么样呢?
主要参数 -exec command {} \;
其中command 就是要对内容进行操作的命令 {} \必须有是固定格式。
举例说明:
比如有个用户user1 离开了,新来个user2,你作为管理员要把user1的所有文件都改为user2的

find . -type f -user user1 -exec chown user2 {} \;
# find -type f -user user1 即查找user1所创建的所有文件,
-exec chown {} \。实现把这些文件的所有者改为user2

下面详解 -exec command {} \命令
首先,{} 是一个特殊的参数,它的含义是占位符和替换符。
(a)它首先作为占位符,-exec 后面命令的参数的占位符,保证了-exec 命令的完整性.
chown 命令的正确格式 是 chown user file
chown user2 {},{}作为file参数的占位符保证了chown命令的完整性和正确性。
(b)替换符
它又是一个替换符,{}替换分别匹配到的文件名,并作为具体参数传给-exec 后的命令.
比如 find -type f -user1 找到文件,file1.txt 和file2.txt那么
{}将分别替换file1.txt 和file2.txt
最终执行的效果等于

 -exec chown user2 {} \;的最终效果等于
chown user2 file1.txt ;chown user2 file2.txt
{}的占位符和替换符作用

还有一种情况:-exec 后面的命令需要find 匹配到的内容整体作为一个参数,而不是对匹配到的内容分别执行一次命令.该怎么做?

  首先-exec command {} \; #这个;是必须可少的,因为;表示一个命令的结束,如果把;换为+,就能把所有的匹配内容作为一个参数列表(一个整体的参数)进行执行。

问题又来了,如果想用-exec 选项执行多个命令怎么做?
可以使用:

 -exec  ./command.sh {} \; #把要执行的多个命令的具体执行逻辑写在一个脚本里,用自己写好的脚本文件名,替换command.sh,别忘了赋予脚本可执行权限哦
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值