Wie kann ich zwei Verzeichnisse mit Unterverzeichnissen vergleichen, um festzustellen, wo der Unterschied liegt?
Wie kann ich zwei Verzeichnisse mit Unterverzeichnissen vergleichen, um festzustellen, wo der Unterschied liegt?
Antworten:
Unter Linux:
$ diff -r /first/directory /second/directory
Unter Windows: Dann sollten Sie WinMerge wahrscheinlich besser herunterladen und installieren
> WinMerge /r c:\first\folder c:\second\folder
M
Ich habe meld auf Ubuntu verwendet - es hat eine gute Verzeichnisvergleichsoption.
Beyond Compare ist ein gutes kommerzielles Tool, etwa 30 US-Dollar. Läuft unter Windows, hat eine eval Version. http://www.scootersoftware.com/
Diff wird normalerweise zum Vergleichen von zwei Dateien verwendet, kann aber noch viel mehr. In den diff
Optionen "r" und "q" funktioniert es rekursiv und leise, dh es werden nur Unterschiede erwähnt, und genau das suchen wir:
diff -rq todo_orig/ todo_backup/
Wenn Sie auch Unterschiede für Dateien sehen möchten, die möglicherweise in keinem der beiden Verzeichnisse vorhanden sind:
diff -Nrq dir1/ dir2/
Sie können auch verwendet werden Rsync
und find
. Für find
:
find $FOLDER -type f | cut -d/ -f2- | sort > /tmp/file_list_$FOLDER
Dateien mit demselben Namen und in denselben Unterordnern, jedoch mit unterschiedlichem Inhalt, werden jedoch nicht in den Listen angezeigt.
Wenn Sie ein Fan von GUI sind, können Sie Meld überprüfen . Es funktioniert gut in Windows und Linux.
DiffMerge für Windows zeigt Unterschiede einschließlich der Unterordner in einem Fenster an. Es gibt auch eine portable Version, aber eine schnelle Suche ergab diesen Download: http://www.softpedia.com/get/System/File-Management/SourceGear-DiffMerge.shtml
Ich habe dies mit dem Cmdlet "Compare-Objects" in Powershell geschrieben:
#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."} }