Domanda

Dalla finestra del terminale:

Quando uso il comando rm è possibile rimuovere solo i file.
Quando uso il comando rmdir rimuove solo le cartelle vuote.

Se ho una directory annidati con file e cartelle all'interno di cartelle con i file e così via, c'è un modo per eliminare tutti i file e le cartelle senza tutto il comando di battitura faticoso?

Se si fa la differenza, io sto usando la shell bash mac da terminale, non Microsoft DOS o Linux.

È stato utile?

Soluzione

rm -rf some_dir

-r "ricorsiva" -f (messaggi di conferma sopprimere) "forza"

Fare attenzione!

Altri suggerimenti

rm -rf *

eliminerebbe tutto (cartelle e file) nella directory corrente.

Ma attenzione! eseguire questo comando solo se si è assolutamente sicuri, che ci si trova nella directory giusta.

Sì, c'è. L'opzione -r dice rm essere r ecursive, e rimuovere l'intera gerarchia del file radicato alle sue argomentazioni; In altre parole, se dato una directory, rimuoverà tutti i suoi contenuti e quindi eseguire ciò che è effettivamente un rmdir.

Le altre due opzioni che si deve sapere sono -i e -f. -i sta per i nteractive; fa rm voi richiesta di conferma prima di eliminare ogni singolo file. -f sta per f Orce; va avanti e cancella tutto senza chiedere. -i è più sicuro, ma -f è più veloce; utilizzare solo se sei assolutamente sicuri si sta cancellando la cosa giusta. È possibile specificare questi con -r o no; si tratta di un ambiente indipendente.

E come al solito, è possibile combinare gli interruttori:. rm -r -i è solo rm -ri, e rm -r -f è rm -rf

Si noti inoltre che ciò che si sta imparando si applicano a bash su ogni Unix OS: OS X, Linux, FreeBSD, ecc, infatti, la sintassi di rm è la stessa in quasi ogni guscio su ogni OS Unix. OS X, sotto il cofano, è in realtà un sistema BSD Unix.

Così ho cercato dappertutto un modo per rimuovere tutti i file in una directory ad eccezione di alcune directory e file, ho voluto mantenere intorno. Dopo molte ricerche ho escogitato un modo per farlo usando find.

find -E . -regex './(dir1|dir2|dir3)' -and -type d -prune -o -print -exec rm -rf {} \;

Essenzialmente si utilizza regex per selezionare le directory da escludere dai risultati quindi rimuove i file rimanenti. Volevo solo mettere fuori qui nel caso qualcun altro bisogno.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top