Удалить одноименные файлы из подпапки

275
Denham Coote

Учитывая следующий макет, как я могу удалить файлы в чердачных папках, которые имеют соответствующий файл в родительской папке? (Файлы будут иметь одинаковое имя, не обязательно одинаковое содержимое)

/folder1 /Attic fileA.txt,v (problem file) fileA.txt,v fileB.txt,v FileC.txt,v /folder2 /Attic fileD.txt,v (another problem file) fileX.txt,v (NOT a problem file) fileD.txt,v fileE.txt,v FileF.txt,v 

Справочная информация: я пытаюсь очистить хранилище CVS для перехода на git. CVS создает папку «Чердак» для удаленных файлов. За последние 10 лет произошло нечто плохое, что означает, что некоторые файлы с одинаковыми именами существуют как в живых, так и в мертвых папках. Я полностью осознаю риски и последствия. Я сделал резервную копию своих данных, и я работаю над копией.

0
Я бы ожидал, что cvs-fast-export справится с такими ситуациями должным образом (на самом деле, они не редкость) - вы уверены, что он на самом деле не будет правильно переносить хранилище? grawity 8 лет назад 0
Я должен исследовать. Я использую cvs2git, и не совсем дома в терминале Unix. Похоже, что нет возможности удалить конфликтующие файлы на чердаке. Denham Coote 8 лет назад 0
Попробуйте cvs-fast-export. См. Также http://esr.ibiblio.org/?p=5190 и http://esr.ibiblio.org/?p=4745. grawity 8 лет назад 0
Не удалось взглянуть на две вышеупомянутые ссылки - правила брандмауэра на работе не любят определенные типы форумов / форумов. Ваш сценарий все-таки добился цели, и теперь у меня есть ссылка, с которой можно поработать, если в будущем возникнет похожая проблема (управление файлами). Denham Coote 8 лет назад 0

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

2
grawity

В Баш:

shopt -s globstar; for file in ./**/Attic/*; do if [[ -e $/$ ]]; then rm -vf "$file"; fi; done; 

При включенном globstar** рекурсивно сопоставляет файлы (независимо от глубины). $и $разрешить удаление префикса или суффикса переменной, что $приводит к имени каталога (минус «/ Attic /…»), а $базовое имя файла.

Вы должны также рассмотреть такие инструменты, как cvs-fast-exportи reposurgeon; Я ожидал, что они правильно справятся с такими ситуациями с самого начала. Если нет, то хотя бы убедитесь, что у вас самая последняя версия cvs2git...

Это работает удовольствие, спасибо! В качестве бонуса, он не бросается именами файлов с пробелами или, v. Очень признателен! Denham Coote 8 лет назад 0

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