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

Bil*_*Lin 6 unix directory permissions compare

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

diff -buf /folder1 /folder2
Run Code Online (Sandbox Code Playgroud)

在文件夹和文件结构方面没有区别。

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

谢谢,

Joh*_*n C 6

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

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

cd a
ls -alrt > ../a.list
cd ../b
ls -alrt > ../b.list
cd ..
diff a.list b.list
Run Code Online (Sandbox Code Playgroud)

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

ls -al | awk {'printf "%s %s %s %s %s %s\n", $1,$2,$3,$4,$5,$9 '}
Run Code Online (Sandbox Code Playgroud)

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

ls -lh --time-style=+
Run Code Online (Sandbox Code Playgroud)

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


yuk*_*ude 6

如果您安装了该tree命令,它可以非常简单地使用与John C 建议的程序类似的程序来完成这项工作:

cd a
tree -dfpiug > ../a.list
cd ../b
tree -dfpiug > ../b.list
cd ..
diff a.list b.list
Run Code Online (Sandbox Code Playgroud)

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

diff <(cd a; tree -dfpiug) <(cd b; tree -dfpiug)
Run Code Online (Sandbox Code Playgroud)

给出的选项tree如下:

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