我需要帮助编写一个shell脚本来检查所有者和组是否与我在IF语句中的名称相匹配。它需要递归检查所有文件和文件夹,包括父文件夹。
例如,我的目录结构可能如下所示
/data
/data/folder1
/data/folder1/fileA
/data/folder2/fileB
我需要验证数据,folder1,folder2,fileA,fileB是否都归同一所有者和组所有。
#!/bin/bash
DIR="/data";
N=0;
for $DIR..
if [ NOT MATCH "username:groupname" ]; then
N=1;
fi
done
if [ $N -gt 0 ]; then
echo "all or some files and folders don't match";
else
echo "all files match";
fi
答案 0 :(得分:0)
#!/bin/bash
OWNER=user
ACTUAL_OWNER='stat -c %U file'
N=0;
not_match(files)
{
if [ ! OWNER = ACTUAL_OWNER ]; then
N=1;
return;
else if [ not_end_of_file ]; then
not_match(files+1)
else
return
fi
}
DIR="/data";
not_match(files)
if [ $N -gt 0 ]; then
echo "all or some files and folders don't match";
else
echo "all files match";
fi
我不确定一些确切的命令或语法,所以它有一些sudo代码,但它基本上是你想要做的。如果它们是匹配的并且它不是您正在搜索的文件的末尾再次调用该函数并且如果它不匹配则增加到下一个文件说它们不要并且只是返回因为您不告诉用户有多少不匹配并且如果结束然后成功并返回打印给用户