GNU/Linux >> Linux Esercitazione >  >> Linux

Come posso eliminare in modo ricorsivo tutti i file e le directory vuoti in Linux?

Questo è davvero semplice:

find Parent -empty -delete

È abbastanza autoesplicativo. Anche se quando ho controllato sono rimasto sorpreso dal fatto che abbia eliminato con successo Parent/Child1. Di solito ti aspetteresti che elabori il genitore prima del figlio a meno che tu non specifichi -depth .

Funziona perché -delete implica -depth . Vedere il manuale GNU find:

-delete Cancella file; true se la rimozione è riuscita. Se la rimozione non riesce, viene emesso un messaggio di errore. Se -delete fallisce, lo stato di uscita di find sarà diverso da zero (quando alla fine uscirà). L'uso di -delete attiva automaticamente l'opzione -depth.

Nota che queste funzionalità non fanno parte dello standard Posix, ma molto probabilmente saranno presenti in molte distribuzioni Linux. Potresti avere un problema specifico con quelli più piccoli come Alpine Linux poiché sono basati su Busybox che non supporta -empty .

Altri sistemi che includono -empty non standard e -delete includono BSD e OSX ma apparentemente non AIX.


Ecco una soluzione a due comandi

Elimina i file vuoti

find Parent/ -type f -size 0 -delete

Prova a rimuovere tutto directory

find Parent/ -type d -depth -print0 | xargs -0 rmdir 2>/dev/null

NB rmdir non può rimuovere directory non vuote, quindi è sicuro da eseguire ma produrrà errori, che stiamo nascondendo

Come sopra, ma essendo un po' più specifico sui messaggi di errore che vengono ignorati. Potrebbe essere necessario modificare se il messaggio varia tra le distribuzioni.

find Parent/ -type d -depth -print0 | xargs -0 rmdir 2>&1 \
  | grep -iv "Directory not empty$"

Puoi farlo anche con fd strumento:

fd -t e -x rm -r

https://github.com/sharkdp/fd


Linux
  1. Linux Elimina file e directory

  2. Come trovare ed eliminare directory e file vuoti in Unix

  3. Come trovare ed eliminare directory e file vuoti in Linux

  4. Come elencare in modo ricorsivo tutti i file e le directory

  5. Come posso trovare in modo ricorsivo tutti i file nelle cartelle correnti e nelle sottocartelle in base alla corrispondenza dei caratteri jolly?

Come comprimere file e directory in Linux

Come trovare ed elencare in modo ricorsivo i file per data in Linux

Come trovare ed eliminare file duplicati in Linux

Come trovare ed eliminare directory vuote in Linux

Trova facilmente file e directory su Linux

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