Estoy trabajando a través de SSH en un WD My Book World Edition. Básicamente, me gustaría comenzar en un nivel de directorio particular y eliminar recursivamente todos los subdirectorios que coincidan con .Apple*
. ¿Cómo lo haría?
Lo intenté
rm -rf .Apple*
y rm -fR .Apple*
ni los directorios eliminados que coincidan con ese nombre dentro de los subdirectorios.
Respuesta aceptada:
find
es muy útil para realizar acciones selectivamente en un árbol completo.
find . -type f -name ".Apple*" -delete
Aquí, el -type f
se asegura de que sea un archivo, no un directorio, y puede que no sea exactamente lo que desea, ya que también omitirá los enlaces simbólicos, los sockets y otras cosas. ¡Puedes usar ! -type d
, que literalmente significa que no son directorios, pero también puede eliminar caracteres y bloquear dispositivos. Sugeriría mirar el -type
predicado en la página man para find
.
Para hacerlo estrictamente con un comodín, necesita soporte de shell avanzado. Bash v4 tiene el globstar
opción, que le permite unir recursivamente subdirectorios usando **
. zsh
y ksh
también apoyan este patrón. Usando eso, puedes hacer rm -rf **/.Apple*
. Esto no es estándar POSIX y no es muy portátil, por lo que evitaría usarlo en un script, pero para una acción de shell interactiva única, está bien.