Это довольно легко сделать с помощью небольшого shell-scripting-foo.
svn status | grep "^\!" | awk '{print $2}' | xargs svn del
Вот разбивка по запросу:
- Выход
svn status
передается по каналу grep
grep
передает каждую строку, начинающуюся с !
(^
в регулярном выражении означает начало строки, а '\' необходимо для экранирования специального значения !
)
awk
затем принимает второй «аргумент» (так сказать ... это путь к файлу) из grep
и направляет только его в ...
xargs
, которая является просто утилитой для построения исполняемых команд оболочки из стандартного ввода, которая генерирует и запускает команду svn del your/file/here
Вы также можете использовать варианты в этой строке, чтобы делать все виды удобных вещей с svn
, например, рекурсивное добавление файлов в репозиторий:
svn status | grep "^\?" | awk '{print $2}' | xargs svn add
Кроме того, я только что вспомнил и хотел указать, что это не будет работать, если у вас есть пробелы в вашем пути или именах файлов. Я всегда об этом забываю, потому что никогда не забываю. Если в ваших путях / именах файлов есть пробелы, используйте следующий вариант в первом примере:
svn status | grep "^\!" | sed -e 's/? *//' | sed -e 's/ /\\ /g' | xargs svn del
(Вероятно, есть более изящный способ сделать это, так что не стесняйтесь вмешиваться). В этом случае первый sed
берет первый символ пробела и любые (если имеются) пробелы, следующие за ним, и удаляет их (в основном, обрезку). Затем второй вызов sed
заменяет все оставшиеся пробелы на \
, который является экранированным пробелом для оболочки. Если подумать, вы могли бы просто заключить его в кавычки ...