Bil*_*Lin 6 unix directory permissions compare
给定2个文件夹:/ folder1和/ folder2,每个文件夹中都有一些文件和子文件夹。我使用以下命令比较包括子文件夹在内的文件差异:
diff -buf /folder1 /folder2
Run Code Online (Sandbox Code Playgroud)
在文件夹和文件结构方面没有区别。
但是,我发现这两个文件夹的文件之间存在一些权限差异。有没有简单的方法/命令可以比较Unix上这2个文件夹(包括子文件夹)下每个文件的权限?
谢谢,
比较两个目录权限的一种方法是将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)
无论哪种方式,只需将结果捕获到上述两个文件中,然后使用diff或sdiff比较结果。
如果您安装了该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 显示组名