如何比较2个文件夹' Unix上的权限?

时间:2014-07-03 10:08:55

标签: unix permissions compare directory

给定2个文件夹:/ folder1和/ folder2,每个文件夹里面都有一些文件和子文件夹。 我使用以下命令来比较文件差异,包括子文件夹:

diff -buf /folder1 /folder2

在文件夹和文件结构方面没有发现差异。

但是,我发现这两个文件夹之间有一些权限差异'文件。是否有简单的方法/命令来比较Unix下这两个文件夹(包括子文件夹)下每个文件的权限?

感谢,

3 个答案:

答案 0 :(得分:4)

比较两个目录的权限的一种方法是将ls -al的输出捕获到每个目录的文件和diff那些目录。

假设您有两个名为a和b的目录。

cd a
ls -alrt > ../a.list
cd ../b
ls -alrt > ../b.list
cd ..
diff a.list b.list

如果您发现由于文件大小和日期戳而导致噪音太大,您可以使用awk过滤ls返回的一些列,例如:

ls -al | awk {'printf "%s %s %s %s %s %s\n", $1,$2,$3,$4,$5,$9 '}

或者,如果您很幸运,您可以使用以下方法删除时间戳:

ls -lh --time-style=+

无论哪种方式,只需将结果捕获到上述两个文件中,然后使用diffsdiff来比较结果。

答案 1 :(得分:0)

find /dirx/ -lsa |awk '{ print $6" "$6" " $11 }' 2次拥有者 find /dirx/ -lsa |awk '{ print $6" "$6" " $11 }'该组的2倍 find /dirx/ -lsa |awk '{ print $5" "$6" " $11 }'所有者和群组

然后你可以重定向到diff文件或只调查管道到更少(或更多)。 你也可以管道grep和grep或" ungrep" (grep -v)缩小结果。 如果目录内容不相同,则Diff不是很有用

答案 2 :(得分:0)

如果安装了tree命令,它可以使用与John C suggested类似的过程非常简单地完成此工作:

cd a
tree -dfpiug > ../a.list
cd ../b
tree -dfpiug > ../b.list
cd ..
diff a.list b.list

或者,您可以只在一行上执行此操作:

diff <(cd a; tree -dfpiug) <(cd b; tree -dfpiug)

赋予tree的选项如下:

  • -d仅扫描目录(也忽略比较文件)
  • -f显示完整路径
  • -p显示权限(例如[drwxrwsr-x]
  • -i删除了tree的常规层次缩进
  • -u显示所有者的用户名
  • -g显示组名