Línea de comandos para eliminar archivos y directorios coincidentes recursivamente


¿Cómo puedo eliminar recursivamente todos los archivos y directorios que coinciden con un patrón determinado? por ejemplo, eliminar todo el ".svn " directorios y los archivos que contienen?

(Tristemente solo DOS)

Author: Rory, 2009-02-11

6 answers

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

Herramienta de línea de comandos para eliminar la carpeta con un nombre especificado recursivamente en Windows?

Para /d /r . %d en (.svn) do @if exist "%d " rd / s / q "%d"

O

For / f "usebackq" % d in ("dir .svn /ad/b / s") do rd / s / q" % d "

En realidad, SVN también le da la opción de exportar un directorio de trabajo sin el.svn / _svn Directory.

Pensamientos posteriores, tres años después: Creo que la razón por la que la gente termina necesitando eliminar recursivamente el .las carpetas svn/_svn se deben a que han copiado directamente su copia local de trabajo a una nueva ubicación para hacer una comparación de carpetas 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 local de trabajo modificada. (Al menos por eso lo he necesitado. Definitivamente es más fácil/más rápido usar 'svn export' cuando eso es posible.)

 56
Author: JMD,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 11:44:58

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

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

Esto busca recursivamente todos los directorios (-tipo d) en la jerarquía comenzando en "."(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 quieres probarlo, prueba

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

Esto debería proporcionarle una lista de todos los directorios que se eliminarían recursivamente.

 18
Author: Antti Huima,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-02-10 23:43:59

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

 7
Author: ,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-02-10 23:47:11

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

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

Pruebe algo como esto primero para hacer un simulacro:

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

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

 6
Author: dreeves,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-02-10 23:42:43

En * nix o Cygwin:

find -name .svn -print0 | xargs -0 rm -rf
 5
Author: greyfade,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-02-10 23:41:31

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

Así:

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

Observe el "\" (barra invertida) en el [path_to]. Determina que es un directorio de salida, por lo que xcopy no cuestionará si es un archivo o un directorio.

El 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...

 1
Author: emanuelcds,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-07-08 13:18:29