linux加权命令,linux 命令的高级用法(chmod+find 批量授权)

授权命令chmod 想必不用我多说了,大家都知道,那么如何以刁钻的角度去使用它,让它用最简洁的方式达到你的目的呢?

先来看两个截图,图1

085401ee1781fb99b442acc9fe53f6e9.png

图2

113c43be1dc2103f84f9fbaf50eaa994.png

这两张图是test 这个文件夹下的目录结构图以及权限图。那么接下来我要将test这个目录以及子目录的所有.sh 的文件设置为只有可执行权限要怎么设置呢?执行以下命令后会发现 tesh.sh 和./test1/test1.sh 的权限已经变成---x--x--x 而其它保持不变

[root@oracle1 test]# find . -name "*.sh" -exec chmod 111 {} \;

[root@oracle1 test]# ll

total 0

drwxr-xr-x 2 root root 38 Sep 29 10:31 test1

drwxr-xr-x 2 root root 6 Sep 29 10:13 test2

-rw-r--r-- 1 root root 0 Sep 29 10:38 test.bash

---x--x--x 1 root root 0 Sep 29 10:22 test.sh

-rw-r--r-- 1 root root 0 Sep 29 10:38 test.txt

find .  -name "*.sh"  与 find . -name *.sh 的区别是少了个双引号,结果就是一个递归,一个不递归。

[root@oracle1 test]# find ../test -name "*.sh"

../test/test1/test1.sh

../test/test.sh

[root@oracle1 test]# find ../test -name *.sh

../test/test.sh

有人会说了 chmod 有个 -R 参数就可以实现递归了。 但是chmod -R 实现的是无差别攻击所以并不适用,以上授权命令还可以写成这样。效果上是一样的。

[root@oracle1 test]# chmod 111 `find . -name "*.txt"`

[root@oracle1 test]# ll

total 0

d--x--x--x 2 root root 38 Sep 29 10:31 test1

d--x--x--x 2 root root 6 Sep 29 10:13 test2

-rw-r--r-- 1 root root 0 Sep 29 10:38 test.bash

---x--x--x 1 root root 0 Sep 29 10:22 test.sh

---x--x--x 1 root root 0 Sep 29 10:38 test.txt

那么问题又来了 我一个目录下要是只有文件与文件夹的区别呢?  好的 ,这个时候你就可以用 find  命令的 -type 参数了 type 后面 d代表目录,f 代表 文件

给文件设置为只有可执行权限

[root@oracle1 test]# chmod 111 `find . -type f`

[root@oracle1 test]# ll

total 0

d--x--x--x 2 root root 38 Sep 29 10:31 test1

d--x--x--x 2 root root 6 Sep 29 10:13 test2

---x--x--x 1 root root 0 Sep 29 10:38 test.bash

---x--x--x 1 root root 0 Sep 29 10:22 test.sh

---x--x--x 1 root root 0 Sep 29 10:38 test.txt

给目录设置为755权限

[root@oracle1 test]# chmod 755 `find . -type d`

[root@oracle1 test]# ll

total 0

drwxr-xr-x 2 root root 38 Sep 29 10:31 test1

drwxr-xr-x 2 root root 6 Sep 29 10:13 test2

---x--x--x 1 root root 0 Sep 29 10:38 test.bash

---x--x--x 1 root root 0 Sep 29 10:22 test.sh

---x--x--x 1 root root 0 Sep 29 10:38 test.txt

以下是取反,不懂find 用法的可以查看我的另一篇文章,以下命令就是不以 .bash 结尾的文件加权。-not 可以换成 !

find . -not -name "*.bash" -exec chmod o+x {} \;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值