Дополнительно
Найдите файлы, существующие в одном каталоге, но отсутствующие в другом
Я'пытаюсь найти файлы, существующие в одном каталоге, но не в другом, я пытался использовать эту команду:
diff -q dir1 dir2
Проблема в том, что команда находит как файлы в dir1
, но не в dir2
, так и файлы в dir2
, но не в dir1
,
Я пытаюсь найти файлы только в dir1
, но не в dir2
.
Вот небольшой пример того, как выглядят мои данные
dir1 dir2 dir3
1.txt 1.txt 1.txt
2.txt 3.txt 3.txt
5.txt 4.txt 5.txt
6.txt 7.txt 8.txt
Еще один вопрос: как я могу найти файлы в dir1
, но не в dir2
или dir3
в одной команде?
295
15
Пояснение:
diff -r dir1 dir2
показывает, какие файлы находятся только в каталоге dir1, а какие только в каталоге dir2, а также изменения файлов, присутствующих в обоих каталогах, если таковые имеются.diff -r dir1 dir2 | grep dir1
показывает, какие файлы находятся только в каталоге dir1awk
для печати только имени файла.Это должно сделать работу:
Параметры объяснил (через дифф(1) страницу):
-Р
- рекурсивно сравниваем найденных подкаталогов.-м
- вывод только о том, что файлы отличаются.Хороший способ сделать это сравнение, чтобы использовать
найти
вкоманду md5sum
, затемразличия
.Пример:
Использовать
найти
в список все файлы в каталоге, затем вычислить MD5-хэш для каждого файла и вставьте его в файл:Делать ту же процедуру на другой каталог:
Затем сравнить результаты двух файлов с "разница" в:
Эта стратегия очень полезна, когда две директории, которые надо сравнивать не в той же машине, и вы должны убедиться, что файлы одинаковы в обоих каталогах.
Еще один хороший способ, чтобы выполнить задание использует мерзавец
С наилучшими пожеланиями!
Мелдинг (http://meldmerge.org/) делает большую работу по сравнения каталогов и файлов внутри.
Плагин vim'a DirDiff - еще один очень полезный инструмент для сравнения каталогов.
Он не только перечисляет, какие файлы отличаются между каталогами, но и позволяет вам проверять/изменять с помощью vimdiff файлы, которые отличаются.
Недовольны все ответы, так как большинство из них очень медленно работать и производить длинные выходные неоправданно большие каталоги, я написал свой скрипт на Python, чтобы сравнить две папки.
В отличие от многих других решений, он не'т сравнить содержимое файлов. Также он не'т пойти внутри подкаталогов, которые отсутствуют в другой каталог. Поэтому выход достаточно лаконичной и скрипт работает быстро.
Другой (может быть быстрее для больших каталогах) подход:
В
СЭД
команда удаляет первый компонент каталога благодаря посту Эрика)Этот ответ оптимизирует одно из предложений от @Adail-младший, добавив опцию
-Д
, что полезно, когда ни один из каталогов сравниваются git-репозиториев:Если вы используете
-Д
, то вы выиграли'т вижу сравнения с/dev/нуль
:текст Бинарные файлы/что и /dev/нуль отличаться
Это немного поздно, но может кому-то помочь. Не уверен, если дифф или rsync выплюнуть просто имена в голой формате. Благодаря plhn для дачи, что хорошее решение, которое я расширены ниже.
Если вы хотите просто имена файлов, так что's легко, просто скопируйте нужные вам файлы в чистом формате, вы можете использовать команду find.
Принято отвечать также список файлов, которые есть в обоих каталогах, но имеют различное содержание. В списке только файлы, которые существуют в dir1 вы можете использовать:
Объяснение:
kdiff3 имеет приятный интерфейс копирования файлов и каталогов.
Он работает на Windows, Linux, и macOS.
Вы можете установить ее несколькими способами:
квас бочковой установить kdiff3
Это bash-скрипт на команды печати для синхронизации двух каталогов
Упрощенный способ сравнить 2 папки, используя команду diff
открыть именем.DAT после завершения выполнения
и вы увидите: Только в имени файла.1: имя.2 Только в параметра directory_name: name_of_file1 Только в параметра directory_name: name_of_file2
Грэп ГНУ может обратный поиск с опцией
-в
. Это делаеткоманда grep
отчетность строк, которые не совпадают. При этом вы можете удалить файлы в директории dir2из списка файлов в директорию dir1
.