2009-02-10 16 views

Respuesta

56

Puesto que usted está buscando una solución DOS, el post de la semana pasada fue casi idéntico y el consenso fue:

Command line tool to delete folder with a specified name recursively in Windows?

a/d/r. % D en (.svn) hacer @if existen "% d" rd/s/q "% d"

o

para/f "usebackq" % d en ("dir Svn /ad/b/s ") hacer rd/s/q "% d"

en realidad, SVN también le da la opción de exportar un directorio de trabajo sin los directorios .svn/_svn.

Afterthoughts, tres años más tarde: Creo que la razón de la gente termina de forma recursiva que haya que eliminar las carpetas .svn/_svn es porque han copiado directamente a su copia de trabajo local a una nueva ubicación con el fin de hacer una comparación de la carpeta de su versión modificada en comparación con una exportación limpia, es decir, después de que algo sale mal con la copia de trabajo local modificada. (Al menos es por eso que lo he necesitado. Definitivamente es más fácil/más rápido usar 'svn export' cuando eso es posible.)

+5

"En realidad, aparentemente TortoiseSVN también le ofrece la opción de exportar un directorio de trabajo sin el directorios .svn/_svn ". Creo que es una característica de svn en sí misma ('svn export') no solo TortoiseSVN, por lo que cualquier otro cliente puede hacerlo también. – MatrixFrog

+0

¡Eso estuvo bien! Windows Explorer no siempre eliminó las cosas .svn. – cbmeeks

+0

o pruebe la variante de núcleo duro de DOS sugerida en http://superuser.com/questions/409479/how-do-i-recursively-delete-all-files-or-folders-whose-names-match-a-pattern- en – Gregor

5

En * nix o Cygwin:

find -name .svn -print0 | xargs -0 rm -rf 
+0

Upvoting por sólo adecuada '' find' + rm' aquí. – TC1

6

Algo como esto puede hacer el truco, pero por supuesto cuidado con él!

find . -name ".svn" -exec rm -rf {} \; 

Pruebe algo como esto primero en hacer una carrera en seco:

find . -name ".*" -exec echo {} \; 

Tenga en cuenta que las llaves vacías se llenan con los nombres de los archivos y el punto y coma escapado termina el comando que se ejecuta (comenzando después el "-exec").

+0

Esto funcionó perfectamente para mí. ¡Gracias! Necesitaba eliminar todos los directorios "CVS", así que ejecuté un descubrimiento. -name "CVS" -exec rm -rf {} \; – cmcculloh

18

¿Es este Unix o Windows? En Unix, una solución fácil es

find . -name '.svn' -type d | xargs rm -rf 

Esto busca recursivamente para todos los directorios (de tipo d) en la jerarquía a partir de las "" (directorio actual), y encuentra aquellos cuyo nombre es '.svn'; la lista de los directorios encontrados se envía a rm -rf para su eliminación.

Si desea probarlo, intente

find . -name '.svn' -type d | xargs echo 

Esto debe proporcionarle una lista de todos los directorios que habría se suprimen de forma recursiva.

+1

Subí porque estaba buscando la misma pregunta, en Win32, pero con gnutils instalado, así que esto funcionó perfectamente para mí. ¡Hombre, pure-DOS está tan loco! –

+0

Upvoting: necesitaba una solución basada en Unix para deshacerme de los terribles archivos eclipse .project y .settings. ¡Gracias! : D – gusterlover6

+2

Downvoting para uso incorrecto de 'rm' +' xargs' + 'find'. Deberías ** siempre ** usar la terminación '-print0' y' NUL' en general en situaciones como estas; de lo contrario, es solo un desastre que está por ocurrir. – TC1

7

Si sus archivos están en subversión, hacer una exportación desde el repositorio le dará un árbol de directorios con los archivos .svn y cualquier otro fragmento eliminado.

+0

¡ah, así es como lo haces! – Rory

+0

Solo tenga en cuenta que la versión exportada no contendrá ningún cambio sin compromiso que pueda tener en su directorio de trabajo (para eso deberá confirmar y luego exportar) –

1

Si desea copiarlo sin exportar y eliminar .svn de los proyectos, debe usar la opción/EXCLUDE de XCOPY.

De esta manera:

xcopy /S/Q/EXCLUDE:svn.excludelist [path_from] [path_to\] 

observar las "\" (barra invertida) en la [via_a]. Determina que es un directorio de salida, por lo tanto, xcopy no cuestionará si se trata de un archivo o un directorio.

svn.excludelist es un archivo de texto que contiene los patrones a ignorar en la copia separados por línea.

Por ejemplo:

.svn 
.svn\ 
\.svn\ 
.obj 
.o 
.lib 
\src\ 

Y así sucesivamente ...

Cuestiones relacionadas