Farkın nerede olduğunu görmek için iki dizini alt dizinlerle nasıl karşılaştırabilirim?
Farkın nerede olduğunu görmek için iki dizini alt dizinlerle nasıl karşılaştırabilirim?
Yanıtlar:
Linux altında:
$ diff -r /first/directory /second/directory
Windows altında: muhtemelen WinMerge'i indirip yüklemeniz daha iyi olur, o zaman
> WinMerge /r c:\first\folder c:\second\folder
M
Ubuntu'da meld kullandım - iyi bir dizin karşılaştırma seçeneği var.
Beyond Compare iyi bir ticari araç, 30 $ ya da öylesine. Pencerelerin altında çalışır, bir eval sürümü vardır. http://www.scootersoftware.com/
Diff normalde iki dosyayı karşılaştırmak için kullanılır, ancak bundan daha fazlasını yapabilir. Gelen diff
olan o seçenekler "r" ve "q" yinelemeli ve sessizce çalışması, sadece söz farklılıkları, hangi aradığımız olan şey:
diff -rq todo_orig/ todo_backup/
Her iki dizinde de bulunmayan dosyalar için farklılıklar görmek istiyorsanız:
diff -Nrq dir1/ dir2/
AyrıcaRsync
ve öğelerini de kullanabilirsiniz find
. Şunun için find
:
find $FOLDER -type f | cut -d/ -f2- | sort > /tmp/file_list_$FOLDER
Ancak aynı adlara ve aynı alt klasörlere, ancak farklı içeriğe sahip dosyalar listelerde gösterilmez.
GUI hayranıysanız, Meld'i kontrol edebilirsiniz . Hem pencerelerde hem de linux'da iyi çalışır.
Windows için DiffMerge, bir pencerede alt klasörler dahil farklılıklar gösterir. Bir yerde taşınabilir bir sürüm de var, ancak hızlı bir arama bu indirmeyi ortaya çıkardı: http://www.softpedia.com/get/System/File-Management/SourceGear-DiffMerge.shtml
Powershell'de Compare-Objects cmdlet'ini kullanarak bunu yazdım:
#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."} }