GNU/Linux >> Linux Esercitazione >  >> Linux

Come eliminare ricorsivamente directory con caratteri jolly?

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.


Linux
  1. Come eliminare un utilizzo non root con UID 0 in Linux

  2. Come elencare in modo ricorsivo le directory in C su Linux?

  3. Come eliminare un file con un nome strano?

  4. Come sostituire in modo ricorsivo i caratteri con sed?

  5. come posso eliminare in modo ricorsivo le directory vuote nella mia home directory?

Come escludere file e directory con Rsync

Come rimuovere (eliminare) la directory in Linux

Come confrontare le directory con Meld su Linux

Come copiare file con estensione di file specifica in modo ricorsivo

Come trovare ed eliminare directory vuote in Linux

Come eliminare file e directory utilizzando la riga di comando di Linux