Come rimuovere i file e le directory in modo rapido tramite terminale (shell bash) [chiusa]
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.
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.