Tengo este siguiente código:
find ./ -iname '*phpmyadmin' -exec rm -rf {} \;
Elimina un directorio llamado phpmyadmin, pero no elimina un archivo llamadophpMyAdmin-Version-XYZ.zip
Incluso si elimino el -rf, todavía no lo eliminará (probablemente debido a un segundo problema con el -iname que no afecta la insensibilidad a mayúsculas y minúsculas).
- ¿Hay alguna forma de eliminar cualquier inodo en un único rm (archivo, directorio, softlink)?
- ¿Por qué agregar el
-inameno tiene efecto?
Nota: No encontré un argumento de "eliminar ningún inodo" en man rm.

findadmite, intente la-deleteacción. (Además, vea gnu.org/software/findutils/manual/html_node/find_html/… para una extensa discusión sobre las muchas formas de hacer esto incorrectamente.)Respuestas:
El problema es que está haciendo coincidir un archivo que termina
phpmyadmin( sin distinción entre mayúsculas y minúsculas ) utilizando el patrón*phpmyadmin. Para obtener cualquier archivo que contenga la cadenaphpmyadmin(sin distinción entre mayúsculas y minúsculas), use-iname '*phpmyadmin*':Quizás obtener los archivos coincidentes antes de la eliminación sería sensato:
Para responder a su primera pregunta, no hay ninguna opción
rmen el espacio de usuario para tratar los inodos.fuente
-depthpara quefindno intente volver a aparecer en un directorio que acaba de eliminar.findantes de agregar el-execparámetro. Muy peligroso.-exec rm -rf {} +: no tiene sentido la penalización de rendimiento de ejecutar unormpor archivo.Esto funciona incluso si alguien crea un directorio -phpmyadmin.
fuente
./, por lo que no es necesario: se ejecutarárm -rf ./-phpmyadmin, lo que debería funcionar con cualquier persona sensatarm. Tratefind ./ -iname '*whatever*' -exec echo '{}' ';'de probarfind */lugar de hacerlofind ., eso lo haría (si un nombre de directorio coincidente comenzara con un guión). Dicho esto, tendería a sugerir el uso--para manejar tales casos proporcionando un final de opciones explícito antes del{}argumento. (Ver # 10 en las pautas de sintaxis de la utilidad POSIX ){} +es considerablemente más eficiente que{} \;, ya que solo ejecutará tantas instancias de su comando (nukeen este caso) como sea necesario para adaptarse a todos los elementos encontrados en la línea de comando, en lugar de uno por cada uno.find */entonces el problema no ocurriría-exec, el directorio con un guión parecería ser unafindopción y se quejaría.