我正在尝试使用find(或更好的方法,因为这将进入shell脚本)来执行以下操作:
这只需要看一层深,即。在/ Users
中具有用户目录的一个级别这是我到目前为止所提出的,但它并没有完全解决问题:
find /Users ! -perm 0700 -type d -depth 2 | grep -v Public | grep -v Sites | /usr/bin/xargs -0 chmod 700
感谢您的建议!
丹
答案 0 :(得分:2)
这应该做:
find /Users -maxdepth 2 \! -perm 0700 \! -name Public \! -name Sites -type d -exec chmod 700 {} +
没有管道,只有一个命令:)
注意:我已将您的-depth 2
更改为-maxdepth 2
并将其移至前面...仅因为GNU find
的{{1}}不能正常工作我相信这是用GNU -depth
编写的。现在,我不知道您在系统上安装了find
,所以YYMV就像他们说的那样......
我还会使用find
的{{1}}选项(如果有的话),只是为了知道发生了什么......例如:
chmod
尝试我给你的命令:
-v
在那里`chmod -v 700 {}`
,所以它是无害的。它只会在屏幕上显示删除find /Users -maxdepth 2 \! -perm 0700 \! -name Public \! -name Sites -type d -exec echo chmod 700 {} +
时将执行的命令。只有在您对其行为方式感到满意时才移除echo
。
编辑。似乎echo
/ echo
的OS X和GNU版本find
不同。所以这是OS X的类似命令(参见Dan的comment below):
-depth
干杯!