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

у меня есть этот фрагмент я нашел.

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

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

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

svn rm Super Test.file

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

3 ответов


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

вы можете 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