【问题标题】:checking if owner/group match in files and subfolders检查文件和子文件夹中的所有者/组是否匹配
【发布时间】:2014-12-03 09:00:57
【问题描述】:

我需要帮助编写一个 shell 脚本来检查所有者和组是否与我在 IF 语句中的名称匹配。它需要递归检查所有文件和文件夹,包括父文件夹。

例如,我的目录结构可能如下所示

/data
/data/folder1
/data/folder1/fileA
/data/folder2/fileB

我需要验证 data、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

【问题讨论】:

  • 什么是NOT MATCH
  • 你必须使用递归吗?
  • 是的,递归是必需的,但是它只有 1 或 2 个目录,包含不超过 50 个文件,所以它应该是一个相当快的过程。
  • 但我没有看到任何递归
  • 这就是我需要帮助的...

标签: file shell permissions directory


【解决方案1】:
#!/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 代码,但它基本上是你想要做的。如果它们是匹配的并且它不是您正在搜索的文件的结尾,则再次调用该函数并增加到下一个文件如果它不匹配,则说它们不匹配并且只是返回,因为您没有告诉用户有多少不匹配以及是否结束达到则成功并返回打印给用户

【讨论】:

  • 我明天试试这个。谢谢!
猜你喜欢
  • 1970-01-01
  • 2011-11-12
  • 1970-01-01
  • 2021-09-07
  • 2011-02-12
  • 2018-09-01
  • 1970-01-01
  • 2022-01-23
  • 2011-08-19
相关资源
最近更新 更多