Domanda

Come posso cancellare tutti i file e le sottodirectory dalla directory attuale directory corrente?

È stato utile?

Soluzione

Sotto bash con strumenti GNU, lo farei così (dovrebbe essere sicuro nella maggior parte dei casi):

rm -rf -- "$(pwd -P)" && cd ..

non sotto bash e senza strumenti GNU, vorrei utilizzare:

TMP=`pwd -P` && cd "`dirname $TMP`" && rm -rf "./`basename $TMP`" && unset TMP

perché questo più sicuro:

  • terminare la lista degli argomenti con -- nei casi il nostro elenco inizia con un trattino (non bash: ./ prima del nome del file)
  • pwd -P non solo pwd nei casi in cui non siamo in una directory reale, ma in un link simbolico che punta ad esso.
  • "s in tutto l'argomento, in casi la directory contiene spazi

alcune informazioni casuali (versione bash):

  • l'cd .. alla fine può essere omesso, ma si sarebbe in una directory inesistente altrimenti ...

Modifica : Come osservato kmkaplan, la cosa -- non è necessario, come pwd restituisce il nome del percorso completo, che inizia sempre con / su UNIX

Altri suggerimenti

olddir=`pwd` && cd .. && rm -rf "$olddir"

È necessaria la cd .., altrimenti fallirà in quanto non è possibile rimuovere la directory corrente.

rm -fr "`pwd`"

Credo che questo sarebbe possibile sotto DOS / Windows CMD, ma non riesco a trovare un modo per pipe i dati tra i comandi. Qualcun altro può conoscere la correzione per questo?

FOR /F %i IN ('cd') DO SET MyDir=%i | CD .. | RD /S %MyDir%

sistema operativo? sulle cose * NIX-based, siete alla ricerca di 'directory rm-rf /'

NOTA: il flag 'r' per 'ricorsivo' può essere pericoloso

Si può solo tornare indietro cartella principale della cartella di destinazione, quindi utilizzare 'rm -rf YourFolder'. oppure si può utilizzare 'rm -rf *' per eliminare tutti i file e sottocartelle dalla cartella corrente.

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