Как проверить, что каждый файл в папке A существует в папке B?


1

Я реорганизую некоторые файлы на своем жестком диске, и у меня есть старая копия папки, и я хочу убедиться, что каждый файл в папке A (старая копия) существует в папке B. Каждая папка содержит не менее 200 файлов, большинство из которых, вероятно, являются дубликатами.

Предостережение: я не могу просто проверить имена файлов, я также должен убедиться, что они имеют одинаковое содержание (а-ля fdupes).

Я проверил man-страницу на предмет fdupesтого, есть ли какой-то способ выполнить обратную операцию (т.е. выяснить, какие файлы не имеют копий), но он появился с пустыми руками, даже если бы функционал существовал, у меня все еще есть файлы, которые существуют только в папке B ,

Эти два вопроса были похожи, но были только для Windows, поэтому не сильно помогли:

Заранее спасибо.


Я не fdupesустановил. Создает ли он список дубликатов файлов?
Чороба

@choroba Да :)
erb

Ответы:


1

Если у вас уже есть список дублирующихся файлов, просто сравните его со списком всех файлов, чтобы найти отдельные:

fdupes -r dir1 dir2 | grep -vwFf- <(find dir1 dir2 -type f)
  • -wтолько целые слова математики (не подстроки, поэтому файл abcdне соответствует abc)
  • -F считает шаблоны буквальными, а не регулярными выражениями
  • -fиспользует указанный файл ( -в данном случае, то есть стандартный ввод) в качестве списка выражений для сравнения.
  • -v как вы, наверное, знаете, показывает несоответствующие линии.

Это должно привести к выводу списка, содержащего файлы, найденные только в одной из папок, должно быть легко проверить, что они все находятся в папке B, просматривая или подбирая имя папки A (называемой ниже dir1) следующим образом:

fdupes -r dir1 dir2 | grep -vwFf- <(find dir1 dir2 -type f) | grep -F dir1

Чудеса творили , нужно было просто добавить -rфлаг fdupes, отредактировать пост так, чтобы он повторялся. Спасибо!
Эрб
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.