给定2个文件夹:/ folder1和/ folder2,每个文件夹里面都有一些文件和子文件夹。 我使用以下命令来比较文件差异,包括子文件夹:
diff -buf /folder1 /folder2
在文件夹和文件结构方面没有发现差异。
但是,我发现这两个文件夹之间有一些权限差异'文件。是否有简单的方法/命令来比较Unix下这两个文件夹(包括子文件夹)下每个文件的权限?
感谢,
答案 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=+
无论哪种方式,只需将结果捕获到上述两个文件中,然后使用diff
或sdiff
来比较结果。
答案 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
显示组名