¿Por qué este comando eliminó todo?

¿Por qué este comando eliminó todo?

Ejecuto este comando en una caja Unix:

find . name CVS -exec rm -fr {} \;

Quería eliminar cualquier archivo llamado CVSdentro de cualquier directorio del directorio actual y eliminó todo.

Afortunadamente, todo lo que tuve que hacer para recuperarme fue volver a consultar en CVS. ¡Imagínese si lo especificara /como directorio de inicio!

Creo que la razón es que usé nameen lugar de -name. Simplemente lo vuelvo a ejecutar como

find . -name CVS -exec rm -fr {} \;

Y parece funcionar bien. ¿Qué sucede exactamente si namese usa en lugar de -name?

Respuesta1

Te faltaba el guión antes -name, por eso estaba buscandocaminosllamado .y , donde el punto hace referencia namea CVSla carpeta actual, por lo que se elimina todo.

La utilidad de búsqueda desciende recursivamente en el árbol de directorios para cada ruta enumerada.

Puede probar fácilmente usando echoantes del comando que desea ejecutar:

encontrar . nombre CVS -exec echo rm -fr {} \;

información relacionada