Как можно удалить все файлы Subversion из каталога с помощью PowerShell?
Как рекурсивно удалить все файлы SVN с помощью PowerShell
Ответы (4)
Если вы действительно хотите просто удалить каталоги .svn, это может помочь:
gci c:\yourdirectory -include .svn -Recurse -Force |
Remove-Item -Recurse -Force
Изменить: добавлен параметр -Force
в gci
для отображения скрытых каталогов и сокращен код.
Кейт прав в том, что если вам нужно избегать удаления файлов с расширением .svn, вам следует фильтровать элементы с помощью ?
.
Get-ChildItem dir -recurse -exclude ..
. -exclude
(и, насколько я правильно помню, также -include
) не очень хорошо работает с -recurse
.
- person stej; 23.11.2011
Предполагая, что вы не хотите удалять какие-либо файлы, которые также могут иметь расширение .svn:
Get-ChildItem $path -r -include .svn -Force | Where {$_.PSIsContainer} |
Remove-Item -r -force
Microsoft ответила на предложение в комментариях ниже, которые Кейт открыл на MS Connect! Начиная с PowerShell V3, вы можете избавиться от лишнего (очень медленного) канала для Where {$_.PSIsContainer}
и использовать вместо него -directory
:
gci $path -r -include .svn -force -directory | Remove-Item -r -force
PowerShell v3 можно загрузить для Windows 7 на странице Windows Management Framework 3.0.
Where {$_.PSIsContainer}
, и все, что вам нужно сделать, это gci . -r -containerOnly
. У меня есть прокси Get-ChildItem для работы таким образом, но я не могу рассчитывать на то, что он есть у других людей. :-(
- person Keith Hill; 06.02.2010
-containerOnly
? Я бы проголосовал точно.
- person stej; 06.02.2010
Как насчет использования SVN Export для получения чистая касса без каталогов .svn?
Изменить
Вы можете посмотреть ответ здесь:
Командная строка для рекурсивного удаления совпадающих файлов и каталогов
Ответ stej правильный, если вы не хотите удалить все файлы с определенной строкой в их имени. В этом случае вам следует использовать:
gci "your_path" -include \*"specific_string"\* -Recurse -Force | Remove-Item -Recurse -Force
Примечания: your_path
требует кавычек, только если они содержат пробелы или специальные символы.
specific_string
требует кавычек, чтобы убедиться, что оба символа подстановки распознаются, особенно если строка включает такие символы, как ()
.