답변:
리눅스에서 :
$ diff -r /first/directory /second/directory
Windows에서 : 아마도 WinMerge를 다운로드하고 설치하는 것이 좋습니다.
> WinMerge /r c:\first\folder c:\second\folder
미디엄
우분투에서 meld 를 사용 했습니다-디렉토리 비교 옵션이 좋습니다.
Beyond Compare는 30 달러 정도의 훌륭한 상용 도구입니다. Windows에서 실행되며 평가 버전이 있습니다. http://www.scootersoftware.com/
Diff는 일반적으로 두 파일을 비교하는 데 사용되지만 그보다 훨씬 많은 작업을 수행 할 수 있습니다. 에서 diff
이다 그는 옵션 "R"와 "Q"가 반복적으로 조용히 작동하게, 만 언급 차이, 이는 우리가 찾고있는 것입니다 :
diff -rq todo_orig/ todo_backup/
두 디렉토리 중 하나에 존재하지 않는 파일의 차이점도 보려면 다음을 수행하십시오.
diff -Nrq dir1/ dir2/
당신은 할 수 있습니다 또한 사용 Rsync
하고 find
. 의 경우 find
:
find $FOLDER -type f | cut -d/ -f2- | sort > /tmp/file_list_$FOLDER
그러나 이름과 하위 폴더는 동일하지만 내용이 다른 파일은 목록에 표시되지 않습니다.
GUI의 팬이라면 Meld를 확인할 수 있습니다 . 윈도우와 리눅스 모두에서 잘 작동합니다.
Windows 용 DiffMerge는 창의 하위 폴더를 포함하여 차이점을 보여줍니다. 어딘가에 휴대용 버전도 있지만 빠른 검색으로이 다운로드가 공개되었습니다. http://www.softpedia.com/get/System/File-Management/SourceGear-DiffMerge.shtml
Powershell에서 Compare-Objects cmdlet을 사용하여 이것을 작성했습니다.
#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."} }