Подтвердить что ты не робот

Как удалить отсутствующие файлы с пробелами в svn?

У меня есть этот фрагмент, который я нашел.

svn status | grep '\!' | awk '{print $2;}' | xargs svn rm 

Он удаляет все отсутствующие файлы, если я или кто-то удаляет файлы вручную (через редактор или они удаляются через систему)

Но мое кодирование bash не очень велико, что ему не хватает в том, что он не работает с файлами, в которых есть пробелы.

svn rm Super\ Test.file

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

4b9b3361

Ответ 1

svn status | grep '^\!' | cut -c8- | while read f; do svn rm "$f"; done

Ответ 2

Вы можете сбежать и использовать флаг -0 для xargs.

svn st | awk '/^!/ { sub("^! +", ""); printf "%s\0", $0 }' | xargs -0 svn rm

Это имеет еще одно преимущество в том, что файлы с кавычками или другими специальными символами также не будут лишать командную строку xargs.

Ответ 3

С GNU awk я могу сделать:

svn stat | awk -v FIELDWIDTHS="1 6 1000 1" -v ORS=$'\0' '$1 == "!" { print $3 }' | xargs -0 svn rm