Ответ 1
svn status | grep '^\!' | cut -c8- | while read f; do svn rm "$f"; done
У меня есть этот фрагмент, который я нашел.
svn status | grep '\!' | awk '{print $2;}' | xargs svn rm
Он удаляет все отсутствующие файлы, если я или кто-то удаляет файлы вручную (через редактор или они удаляются через систему)
Но мое кодирование bash не очень велико, что ему не хватает в том, что он не работает с файлами, в которых есть пробелы.
svn rm Super\ Test.file
Правильный способ удаления файлов с пробелом, но я не знаю, как изменить фрагмент выше, чтобы он работал. (или если у вас есть другой фрагмент, который делает)
svn status | grep '^\!' | cut -c8- | while read f; do svn rm "$f"; done
Вы можете сбежать и использовать флаг -0 для xargs.
svn st | awk '/^!/ { sub("^! +", ""); printf "%s\0", $0 }' | xargs -0 svn rm
Это имеет еще одно преимущество в том, что файлы с кавычками или другими специальными символами также не будут лишать командную строку xargs.
С GNU awk я могу сделать:
svn stat | awk -v FIELDWIDTHS="1 6 1000 1" -v ORS=$'\0' '$1 == "!" { print $3 }' | xargs -0 svn rm