У меня есть два каталога с тем же списком файлов. Я должен сравнить все файлы, существующие в обоих каталоги с помощью diff
команда. Существует ли простой параметр командной строки, чтобы сделать это, или я должен записать сценарий оболочки, чтобы получить список файлов и затем выполнить итерации через них?
Для этого можно использовать команду diff
:
diff -bur folder1/ folder2/
Она выведет рекурсивный diff, игнорирующий пробелы, с единым контекстом: флаг
diff
может не только сравнить два файла, но и, используя опцию -r
, пройтись по целым деревьям каталогов, рекурсивная проверка различий между подкаталогами и файлами, встречающихся в сопоставимых точках каждого дерева.
$ man diff
...
-r --recursive
Recursively compare any subdirectories found.
...
Если это GNU diff, то вы должны быть в состоянии направить его на два каталога и воспользоваться опцией -r.
Иначе попробуйте использовать
for i in $(\ls -d ./dir1/*); do diff ${i} dir2; done
N.B. Как указал Деннис в разделе комментариев, на самом деле вам не нужно делать подстановку команд на ls. Я делаю это так долго, что в основном я делаю это на автопилоте и подставляю команду, которая нужна мне для получения списка файлов для сравнения.
Также я забыл добавить, что я делаю '\ls', чтобы временно отключить мой псевдоним ls в GNU ls, так что я потеряю информацию о цветовом оформлении из списка, возвращаемого GNU ls.
Diff имеет опцию -r
, которая предназначена именно для этого.
-r dir1 dir2