2009-05-12 10 views
12

Tengo este fragmento que encontré.¿Cómo puedo eliminar los archivos que faltan con espacios en svn?

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

Se elimina todos los archivos que faltan, si yo o alguien elimina los archivos manualmente (mediante el editor o se eliminan a través del sistema)

Pero mi codificación fiesta no es muy grande, lo que le falta es que no funciona con archivos que tienen espacios en él.

svn rm Super\ Test.file 

Es la forma correcta de eliminar archivos con un espacio, pero no sé cómo modificar el fragmento de arriba para que funcione. (o si tiene otro fragmento que sí lo hace)

Respuesta

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

Puede 0 escapar y usar la bandera -0 para xargs.

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

Esto tiene otra ventaja en que los archivos con citas u otros caracteres especiales no arruine la línea de comando xargs tampoco.

0

Con awk GNU, que puedo hacer:

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