El command XArgs en cygwin está destruyendo routes de files

Estoy tratando de usar xargs en un sistema Cygwin Windows para eliminar los files SVN eliminados localmente.

Ejecuto el siguiente command que genera el siguiente resultado:

svn status | grep '^\!' | sed 's/! *//' 

weblings-webplatform \ vendor \ jetty-7.0.0.pre5 \ contexts-available \ test-annotations.d \ META-INF \ MANIFEST.MF weblings-webplatform \ vendor \ jetty-7.0.0.pre5 \ contexts-available \ test -annotaciones.d \ WEB-INF \ jetty-env.xml

Luego, cuando ejecuto el siguiente command, recibo los siguientes errores:

  svn status | grep '^\!' | sed 's/! *//' | xargs -I% svn rm % svn: 'weblings-webplatformvendorjetty-7.0.0.pre5contexts-availabletest-annotations.dMETA-INFMANIFEST.MF' does not exist 

He intentado usar cygpath para convertir las routes de estado de svn, pero parece que no hace nada.

Usar cygpath para cambiar las routes al formatting Unix debería funcionar, creo. '\' Es un personaje de escape en el mundo de Linux, parece que xargs lo maneja como uno. Algo como:

 svn status | grep '^\!' | sed 's/! *//' | cygpath -m | xargs -I% svn rm % 

Especifique cygwin svn (instalándolo si es necesario) como /usr/bin/svn para que pueda get / en el resultado del svn status . ¡Pero ten cuidado! No querrás mezclar diferentes versiones de svn como 1.4, 1.5, 1.6, o te divertirás aún más.

Usa sed para cambiar el \ into / . (Las barras diagonales funcionan con la API de Windows y casi todos los progtwigs de Windows, tienen que rechazarse específicamente para que no funcionen). Desea seguir usando la misma versión de svn (como podría estar usando en otra parte, digamos con una GUI) para que pueda no tiene que preocuparse por corromper sus datos.

O cambie todo a usar la versión de svn de cygwin.

El problema de raíz es que xargs está re-interpretando los datos, ya sea porque así es como funciona en cygwin o tiene que pasar todo a través de un shell (que luego lo hace), no estoy seguro (y no puedo probar hasta mañana) .

Si entiendo su problema correctamente, entonces haría un pequeño ajuste: agregue comillas dobles alnetworkingedor de la variable de reemploop, en la statement de xargs:

  xargs -I% svn rm "%" 

De lo contrario, una ruta determinada que contenga un espacio en blanco le dirá a rm que elimine dos files o más, ninguno de los cuales existe. Es decir, una línea como c: \ Cygwin \ My Stuff pasada como input a rm se convierte

rm c: \ Cygwin \ My; rm Cosas