Question Comment puis-je supprimer les fichiers manquants avec des espaces dans svn?


J'ai cet extrait que j'ai trouvé.

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

Il supprime tous les fichiers manquants, si moi ou quelqu'un supprime les fichiers manuellement (via l'éditeur ou ils sont supprimés via le système)

Mais mon codage bash n'est pas génial, ce qui manque, c'est qu'il ne fonctionne pas avec des fichiers contenant des espaces.

svn rm Super\ Test.file

Est-ce la bonne façon de supprimer des fichiers avec un espace, mais je ne sais pas comment modifier l'extrait ci-dessus pour qu'il fonctionne. (ou si vous avez un autre extrait qui le fait)


12
2018-05-12 13:32


origine


Réponses:


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

18
2018-05-12 13:46



Vous pourriez 0 échapper et utiliser le drapeau -0 pour xargs.

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

Cela a un autre avantage: les fichiers avec des guillemets ou d'autres caractères spéciaux ne gâchent pas non plus la ligne de commande xargs.


4
2018-05-12 13:51



Avec GNU awk, je peux faire:

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

0
2018-05-12 14:13