Я всегда был неравнодушен к sha1sum (или даже к md5sum; в этом контексте это вполне безопасно ).
find. -type f -print0 | xargs -0 md5sum | sort -k2 > /tmp/before
# don't miss the "sort" in there; it's important
# (later)
find. -type f -print0 | xargs -0 md5sum | sort -k2 > /tmp/after
vimdiff /tmp/before /tmp/after
# or whatever diff tool you like, even "diff -u"
Иногда --например, если у вас слишком много файлов, которые переименовываются или перемещаются, --сортировка по первому полю и последующее сравнение могут помочь, но в большинстве случаев этого достаточно.
Обратите внимание, что по сравнению с некоторыми другими методами у этого есть то преимущество, что вам не нужно сохранять копию файлов «до»; только выходной файл md5sum.
Попробуйте с этим, учитывая измененный образец входного файла:
[LightDM]
[Seat:*]
#autologin-user=
[Foo:*]
#autologin-user=
[Bar:*]
#autologin-user=
Команда:
$ sed '/^\[Seat:\*\]$/,/\[/s/^#autologin-user=$/autologin-user=pi/' foo.txt
[LightDM]
[Seat:*]
autologin-user=pi
[Foo:*]
#autologin-user=
[Bar:*]
#autologin-user=