Sto lavorando tramite SSH su una WD My Book World Edition. Fondamentalmente vorrei iniziare da un particolare livello di directory e rimuovere ricorsivamente tutte le sottodirectory corrispondenti a .Apple*
. Come potrei procedere?
Ho provato
rm -rf .Apple*
e rm -fR .Apple*
né le directory eliminate che corrispondono a quel nome all'interno delle sottodirectory.
Risposta accettata:
find
è molto utile per eseguire azioni in modo selettivo su un intero albero.
find . -type f -name ".Apple*" -delete
Qui, il -type f
si assicura che sia un file, non una directory, e potrebbe non essere esattamente quello che vuoi poiché salterà anche collegamenti simbolici, socket e altre cose. Puoi usare ! -type d
, che letteralmente significa non directory, ma potresti anche eliminare caratteri e bloccare dispositivi. Suggerirei di guardare il -type
predicato nella pagina man per find
.
Per farlo rigorosamente con un carattere jolly, è necessario il supporto avanzato della shell. Bash v4 ha il globstar
opzione, che ti consente di abbinare ricorsivamente le sottodirectory utilizzando **
. zsh
e ksh
supportano anche questo modello. Usandolo, puoi fare rm -rf **/.Apple*
. Questo non è standard POSIX e non è molto portabile, quindi eviterei di usarlo in uno script, ma per un'azione shell interattiva una tantum, va bene.