[问题] 关于bash指令

楼主: ymzk (电磁居士)   2016-05-03 22:54:02
在网络上有看到一个方法可以把某个目录下所有资料夹都变成群组可执行
指令如下
sudo chmod g+x $(find ./ -type d)
但我执行时会出现一些怪怪的讯息, 例如一些资料夹他说根本找不到
另问一下这到底是什么原理?
他是执行了很多chmod指令还是一个chmod指令后面带了很长的参数?
如果是后者会不会因为太长而有部份失败@@"
作者: CP64 (( ̄▽ ̄#)﹏﹏)   2015-05-03 22:54:00
这个就后面加了一长串的参数find ./ -type d -exec sudo chmod g+x {} \;这种的就是执行很多次
作者: yvb   2016-05-03 23:00:00
可能是目录名有空白. 太长应该是 arguments too long 之类.
作者: CP64 (( ̄▽ ̄#)﹏﹏)   2016-05-03 23:02:00
for dir in $(find . -type d); do chmod g+x $dir; done这种也是 不过目录名称有空白会有问题刚刚试了一下 原 PO 那条也会有空白的问题
楼主: ymzk (电磁居士)   2016-05-03 23:05:00
有看过find ./ -type d -exec sudo chmod g+x {} \;但无法理解 {} \ 是什么意思?
作者: CP64 (( ̄▽ ̄#)﹏﹏)   2016-05-03 23:07:00
那是 find 的参数格式他会察看指定目录下的所有档案当符合条件时会执行 exec 后面指定的指令因为 ; 在大部份 shell 里有意义所以要 escape
作者: Adama (So Say We All.)   2016-05-03 23:10:00
{}代表find找到的档案,\;是"sudo chmod...;"的那个";"
作者: CP64 (( ̄▽ ̄#)﹏﹏)   2016-05-03 23:10:00
{} 则代表这边要置换成目前遍历到且符合条件的档名
楼主: ymzk (电磁居士)   2016-05-03 23:11:00
理解=口= 感谢 那这个没有空白问题囉@@
作者: CP64 (( ̄▽ ̄#)﹏﹏)   2016-05-03 23:14:00
我试过是没有
楼主: ymzk (电磁居士)   2016-05-03 23:17:00
嗯... 这条好像也没错误讯息了也~ 感谢
作者: danny8376 (钓到一只猴子@_@)   2016-05-04 02:37:00
find的exec会自动上""啦 原PO的那条要另外包上""才行

Links booklink

Contact Us: admin [ a t ] ucptt.com