Сравните содержимое двух каталогов из командной строки

Anonim

Чтобы сравнить и перечислить различное содержимое двух каталогов без дополнительного вывода, который вы получаете с помощью таких команд, как diff, вместо этого вы можете использовать команду comm. Чтобы начать работу, запустите Терминал и введите следующую команду, соответствующим образом изменив пути к каталогам:

comm -3 <(ls -1 папка1) <(ls -1 папка2)

На выходе будут файлы, которые различаются в каждой папке, причем файлы, уникальные для папки 1, выравниваются по левому краю, а файлы, уникальные для папки 2, выравниваются по правому краю.

Например, чтобы сравнить содержимое папки с названием «Изображения» и папки с именем «Старые изображения», хранящихся в каталоге загрузок пользователя, синтаксис будет следующим:

comm -3 <(ls -1 ~/Загрузки/Изображения) <(ls -1 ~/Загрузки/OldPictures)

Вывод может выглядеть следующим образом:

$ comm -3 <(ls -1 ~/Загрузки/Изображения) <(ls -1 ~/Загрузки/OldPictures) Folder-1-File.PNG Folder -2-Файл копия.PNG фото 1 копия.PNG фото 3.PNG

Обратите внимание на отступ, который показывает, какие файлы уникальны для каждой папки. В приведенном выше примере файлы «photo 1 copy.PNG» и «photo 3.png» выровнены по правому краю, поэтому они уникальны для каталога OldPictures и Folder-1-File.PNG и Folder-2-File copy.PNG уникальны для исходной папки Pictures.

Это прекрасно работает в Mac OS X, но это общая команда Unix, поэтому вы можете найти ее пригодной для использования в Linux и других вариантах. Если вы столкнулись с какими-либо проблемами совместимости или считаете эту команду излишне сложной, попробуйте использовать diff для выполнения той же функции.

Отличный трюк, найденный @climagic в Твиттере, @osxdaily тоже там!

Сравните содержимое двух каталогов из командной строки