#set the directories
$firstdirectory = Read-Host "What is the first directory you wish to compare?" $seconddirectory = Read-Host "What is the second directory you wish to compare?"
#Check if the user wants to compare subdirectories
$recursivesearch = Read-Host "Do you wish to compare subdirectories? Please enter yes or no." If ($recursivesearch -eq "yes")
#get the contents
{ $firstdirectorycontents = @(Get-ChildItem $firstdirectory -Recurse) $seconddirectorycontents = @(Get-ChildItem $seconddirectory -Recurse ) }
else { $firstdirectorycontents = @(Get-ChildItem $firstdirectory) $seconddirectorycontents = @(Get-ChildItem $seconddirectory) }
#compare the objects and handle errors
if ($firstdirectorycontents.Count -eq 0 )
{
Write-Host "No files were found in the first directory, the directories cannot be compared."
}
elseif ($seconddirectorycontents.Count -eq 0)
{
Write-Host "No files were found in the second directory, the directories cannot be compared."
}
else
{
try
{
Compare-Object -ReferenceObject $firstdirectorycontents -DifferenceObject $seconddirectorycontents
}
catch {"Another error occured."} }
在 Linux 下:
在 Windows 下:你可能最好下载并安装 WinMerge,然后
米
我在 Ubuntu 上使用了meld——它有一个很好的目录比较选项。
Diff 通常用于比较两个文件,但可以做的远不止这些。在
diff
他的选项中,“r”和“q”使它递归地安静地工作,也就是说,只提到差异,这正是我们正在寻找的:如果您还想查看两个目录中可能不存在的文件的差异:
您也可以使用
Rsync
和find
。对于find
:但是,名称相同、子文件夹相同但内容不同的文件将不会显示在列表中。
如果您是 GUI 的粉丝,您可以查看Meld。它在 Windows 和 linux 中都可以正常工作。
Beyond Compare 是一个很好的商业工具,30 美元左右。在 windows 下运行,有一个 eval 版本。http://www.scootersoftware.com/
在 Windows 上,我相信 windiff 可以做到这一点,但Winmerge是我完成这项工作的首选工具。它是开源的,在比较两组目录树方面做得非常好。
编辑:哎呀,被马吕斯打败了
DiffMerge for Windows 显示差异,包括窗口中的子文件夹。还有一个便携式版本,但快速搜索显示此下载: http: //www.softpedia.com/get/System/File-Management/SourceGear-DiffMerge.shtml
我使用 Powershell 中的 Compare-Objects cmdlet 编写了这个: