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