Tengo directorios temporales llenos de basura que todos comienzan con __temp__
(por ejemplo, __temp__user_uploads
), que deseo eliminar con una función de limpieza. Mi intento función es ejecutar:¿Cómo puedo usar el comando `find` en Linux para eliminar directorios no vacíos?
find . -name __temp__* -exec rm -rf '{}' \;
Si funciono con el comando y hay múltiples __temp__
directorios (__temp__foo
y __temp__bar
), consigo la salida:
find: __temp__foo: unknown option
Si funciono con el comando y hay está a sólo 1 __temp__
directorio (__temp__foo
), se elimina y me da la salida:
find: ./__temp__foo: No such file or directory
¿Por qué no funciona el comando, por qué es inconsistente y cómo puedo solucionarlo?
Como una mejora de la eficiencia y la hermeticidad, asumiendo las utilidades de GNU (ya que el OP está en Linux), en realidad recomendaría 'find. -maxdepth 1 -type d -name '__temp __ *' -print0 | xargs -0 rm -rf'. – pilcrow
+1 por sugerir xargs en lugar de -exec –
@AshishKumar: ¿por qué +1 para xargs? ¿'-exec' no es una buena característica de' encontrar'? pilcrow, gracias por la explicación! – orokusaki