sed более применим для данного случая, чем grep
sed '/\n/{P;D;};s/\[/\n/;s/\]/\n/;D' log
$ rmlint --types duplicatedirs <path>
Это выведет список дублирующихся каталогов и создаст сценарий оболочки (rmlint.sh), который вы можете запустить для их удаления.
Инструкции по установке и т. д. см. в руководстве пользователя.
Попробуйте сначала сравнить файлы побайтно и, если найден один и тот же файл, переместите дубликаты файлов в путь резервного копирования.
find /path/to/src -type f -exec cmp -s '{}' "/path/to/destA/{}" \; -exec echo mv -v "/path/to/destA/{}" "/path/to/backup/" \;
/path/to/destS
. обратите внимание, что если у вас было одно и то же имя файла в нескольких пунктах назначения с командой перемещения на /path/to/backup/
, они будут перезаписаны с тем же именем файла. echo
из команды для выполнения фактического перемещения. Затем выполните еще один поиск для удаления пустых каталогов.
find -type d -empty #-delete
#
из команды, чтобы выполнить фактическое удаление, когда убедитесь, что она отображает ожидаемые пустые каталоги. Позже вы можете перепроверить, что файлы перемещены в папку резервного копирования /path/to/backup/
, и как только вы подтвердите это сами, вы также можете удалить их по своему желанию.