Я пытаюсь сравнить все файлы в двух папках через md5sum в одной команде. Некоторым нравится следующее (bash) в Debian:
$ cd ~/FOLDER1
$ md5sum ~/FOLDER2/* | md5sum -c -
Идея состоит в том, что выходные данные хэшей из первой суммы md5 будут переданы во вторую и использованы в качестве входного файла. Однако проверка этого показывает, что он просто сравнивает каждый файл в FOLDER2 с самим собой и возвращает "OK" для каждого. Я думаю, причина этого не в том, что имена файлов, выводимые из первой суммы md5, включают полный путь. Я посмотрел на md5deep
но не нашел ничего, чтобы помочь мне там. Я знаю, что можно сделать md5sum для одной папки, записать результаты в файл, а затем использовать этот файл в качестве входных данных для второй md5sum. Я хотел сделать все это в одну строку через канал, а не с помощью двух команд и записи файла.
Изменить: принятый здесь ответ (с использованием diff
) может делать то, что я хочу, но я не знаю, сравнивает ли diff
(правильно) двоичные файлы.
Редактировать: чтобы получить вывод, который я хотел, используя md5sum (который показывает имя файла и "ОК"), я прибег к написанию командного файла. Выполните с помощью diffFolders.sh ~/FOLDER1 ~/FOLDER2
.
#!/bin/bash
HERE=$PWD
cd "$1"
md5sum * > /tmp/md5sum.cmp
cd "$2"
md5sum -c /tmp/md5sum.cmp
cd $HERE
Этот скрипт будет сравнивать только файлы, которые присутствуют в ~/FOLDER
. Если ~/FOLDER2
имеет дополнительные файлы, они не будут сравниваться, и никакие выходные данные не укажут, что они даже существуют.