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.