这里有个简单的需求,需要用shell脚本实现:
-
检查/data/wwwroot/app目录下所有文件和目录,看是否满足下面条件:
-
1)所有文件权限为644
-
2)所有目录权限为755
-
3)文件和目录所有者为www,所属组为root
-
如果不满足,改成符合要求,注意,不要直接改权限,一定要有判断的过程。
这个需求并不算难,同样核心命令也是find,关键点在于如何判断。也许你想find出来之后直接修改权限或者修改所有者和所属组,但这是不符合要求的,因为你没有加判断。
先来看find的一个用法:
这样可以找到权限为644的文件,但需求中要求的是不为644的,那该怎么做呢?
这样做即可:
也就是加一个! 就达到目的了,也可以这样:
同理,目录权限不是755,可以这样找:
find也可以找所属组和所有者:
除了使用find外,我们也可以使用stat命令来获取文件或者目录的权限、属主、属组,stat这样用:
获取到权限后,再去做比对
最终脚本如下:
或者:
两个脚本相比,第一个只需要find一次,而第二个需要find四次,如果文件量很大,执行效率很差。