Сравнение содержимого каталога по содержимому файла, игнорируя имя
Есть ли утилита для сравнения содержимого каталога только по содержимому файла?
У меня есть два набора файлов, большинство из них двоичные одинаковые, но некоторые из них разные; но каждый файл пары имеет разные имена, даже если их содержимое совпадает.
Существует ли инструмент, который может сравнивать содержимое каталога на основе фактического содержимого файла и не требует совпадения имени файла?
Я нахожусь на Windows, но также интересуюсь инструментами GNU/Linux.
0 ответов
Это может сработать, у меня были некоторые проблемы с этим, но я потратил на это достаточно времени, которым стоит поделиться, если это поможет кому-то другому.
Некоторые предостережения: Get-FileHash
требует Powershell 4. Это ничего не делает с рекурсией.
$left = dir .\leftDir\* | Get-FileHash -Algorithm MD5
$right = dir .\rightDir\* | Get-FileHash -Algorithm MD5
$leftOnly = compare -passthru ($left | select hash) ($right | select hash)
$rightOnly = compare -passthru ($right | select hash) ($left | select hash)
echo "Print left only files"
foreach ($l in $leftOnly)
{
foreach ($file in $left)
{
if ($file.Hash -eq $l.Hash) { echo $file.Path }
}
}
echo ""
echo "Print right only files"
foreach ($r in $rightOnly)
{
foreach ($file in $right)
{
if ($file.Hash -eq $r.Hash) { echo $file.Path }
}
}