Linux

比較兩個文件夾內容的所有者和權限?

  • January 28, 2022

如何比較兩個文件夾內容的所有者和權限?是否有類似diff命令遞歸比較兩個文件夾並顯示所有者和權限差異的東西?

與所有事情一樣,解決方案是一個 perl 腳本:

#!/usr/bin/perl

use File::Find;

my $directory1 = '/tmp/temp1';
my $directory2 = '/tmp/temp2';

find(\&hashfiles, $directory1);

sub hashfiles {
 my $file1 = $File::Find::name;
 (my $file2 = $file1) =~ s/^$directory1/$directory2/;

 my $mode1 = (stat($file1))[2] ;
 my $mode2 = (stat($file2))[2] ;

 my $uid1 = (stat($file1))[4] ;
 my $uid2 = (stat($file2))[4] ;

 print "Permissions for $file1 and $file2 are not the same\n" if ( $mode1 != $mode2 );
 print "Ownership for $file1 and $file2 are not the same\n" if ( $uid1 != $uid2 );
}

查看http://perldoc.perl.org/functions/stat.html>和<http://perldoc.perl.org/File/Find.html了解更多資訊,尤其是stat如果您想比較其他文件屬性的資訊。

如果文件在directory2中不存在但在directory1中存在,也會有輸出,因為stat會有所不同。

引用自:https://serverfault.com/questions/373058