Как удалить повторяющиеся каталоги, содержащие одинаковые файлы?

sed более применим для данного случая, чем grep

sed '/\n/{P;D;};s/\[/\n/;s/\]/\n/;D' log
1
18.08.2017, 01:36
2 ответа
$ rmlint --types duplicatedirs <path>

Это выведет список дублирующихся каталогов и создаст сценарий оболочки (rmlint.sh), который вы можете запустить для их удаления.

Инструкции по установке и т. д. см. в руководстве пользователя.

2
27.01.2020, 23:45

Попробуйте сначала сравнить файлы побайтно и, если найден один и тот же файл, переместите дубликаты файлов в путь резервного копирования.

find /path/to/src -type f -exec cmp -s '{}' "/path/to/destA/{}" \; -exec echo mv -v "/path/to/destA/{}" "/path/to/backup/" \;
  • Ps, вам нужно запустить выше для всех ваших /path/to/destS. обратите внимание, что если у вас было одно и то же имя файла в нескольких пунктах назначения с командой перемещения на /path/to/backup/, они будут перезаписаны с тем же именем файла.
  • Ps, удалите echoиз команды для выполнения фактического перемещения.

Затем выполните еще один поиск для удаления пустых каталогов.

find -type d -empty #-delete
  • Ps, удалите #из команды, чтобы выполнить фактическое удаление, когда убедитесь, что она отображает ожидаемые пустые каталоги.

Позже вы можете перепроверить, что файлы перемещены в папку резервного копирования /path/to/backup/, и как только вы подтвердите это сами, вы также можете удалить их по своему желанию.

0
27.01.2020, 23:45

Теги

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