показать различия между файлом и файлом в (сжатом) архиве tar

1728
Kyss Tao

Скажем, я распаковал сжатый gz tar-файл и не помню, какие изменения я внес в распакованные файлы, или я заархивировал папку некоторое время назад и хочу знать, что с тех пор изменилось в файлах.

Я могу использовать, tar -zdчтобы получить обзор. Затем, скажем, это показывает, что файл fooизменился. Как я могу увидеть изменения в этом файле, то есть разницу между файлом в моей файловой системе и (более старым) файлом в архиве (в идеале в vimdiff, но вывод diff тоже подойдет)?

1

2 ответа на вопрос

2
Ignacio Vazquez-Abrams

Используйте tar ... -Oвместе с процессом замены в bash.

diff ... <( tar ... -O ... file.ext ) file.ext 
получение различий с одной командной строкой также хорошо; после некоторой игры (не знаю, как / почему это работает) `diff <(tar -xzOf archive.tgz dir / file.ext) dir / file.ext` дал мне правильный результат Kyss Tao 12 лет назад 0
(исправление: я думаю, что понимаю, `<(...)` преобразует стандартный вывод ... в файл) Kyss Tao 12 лет назад 0
0
garyjohn

Откройте сжатый tar-файл в vim, наведите курсор на fooи нажмите Enter. Затем выполните

:vert diffsplit local/path/to/foo 

Похожие вопросы