İki dizin (alt dizinler dahil) farklılıklar için nasıl karşılaştırılır?


14

Farkın nerede olduğunu görmek için iki dizini alt dizinlerle nasıl karşılaştırabilirim?


6
İşletim Sistemi lütfen.
Maximus Minimus

İki dizin arasında farklı dosyalar olup olmadığını veya dosyaların içeriğinin farklı olup olmadığını bilmek istiyor musunuz?
Matt Simmons

Yanıtlar:


20

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


3
Şimdi diff -qrl kullanıyorum ...
alexus

1
GUI'de komut istemini kullanmadan / r anahtarını belirtme seçeneği var mı?
Omtara

@Omtara, WinMerge uygulamasını başlattıktan sonra Dosya - Aç'ı seçin. Açık iletişim kutusunda // Alt Klasörleri İçer // seçeneğini işaretleyin. Windows Gezgini'nde iki klasör seçerek WinMerge'yi açarsanız, Shell tümleştirmesini yapılandırın. Aç Düzenle - Seçenekler; Kategori // Kabuk Entegrasyonu'na gidin ve // ​​varsayılan olarak alt klasörleri dahil et // seçeneğini işaretleyin.
R. Schreurs

2

Ubuntu'da meld kullandım - iyi bir dizin karşılaştırma seçeneği var.


Meld için +1, normalde diff gibi komut satırı seçeneklerini seviyorum ama böyle bir görsel şekilde bir bakışta iki farklı dizinin gerçek farklı klasörlerini görsel olarak görebilmek çok yararlı. Hem meld hem de diff, 2018'de bunu bulan herkes için Ubuntu 16.04 ve Ubuntu 18.04'te hala iyi çalışıyor. Elbette Windows'ta WinMerge harika bir seçenektir. Meld'in Windows üzerinde çalıştığını duydum ama henüz kişisel olarak denemedim.
Ken

1

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/


1

Windows'da, windiff'in bunu yaptığına inanıyorum, ancak Winmerge bu iş için tercih ettiğim araç. Açık kaynak kodlu ve iki dizin ağacı setini karşılaştırmak için çok düzgün bir iş çıkarıyor.

düzenleme: oops, Marius tarafından dövüldü


1

Diff normalde iki dosyayı karşılaştırmak için kullanılır, ancak bundan daha fazlasını yapabilir. Gelen diffolan 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.



0

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."} }
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.