GNU/Linux >> Linux Esercitazione >  >> Linux

Rimuovi solo i file nella directory su Linux NOT directory

Poiché questo è in cima alla ricerca su Google, la risposta più semplice è:

rm $directoryPath/*

dove $directoryPath è la directory che vuoi svuotare. I crediti dovrebbero andare a cbm3384 (che per qualche motivo ha ottenuto voti negativi per questa risposta, perché?)

Se non vuoi confermare:

rm -f $directoryPath/*

Se non ci credi prova man rm o

mkdir -p 1/2/3; echo 'hello1' > 1/hello1.txt; echo 'hello2' > 1/2/hello2.txt;echo 'hello3' > 1/2/3/hello3.txt
rm 1/2/*

Quanto sopra crea una struttura di directory, che ha 'helloX.txt' in ogni cartella (X è il livello di directory). rm 1/2/* cancella hello2.txt e lascia intatta l'altra struttura.

Anche rm */*/* cancella solo hello2.txt . È l'unico che corrisponde al modello.

Solo un esempio di Makefile che pulisce la directory tmp di cakephp e lascia intatta la struttura della directory:

clean:
    -rm -f tmp/*
    -rm -f tmp/*/*
    -rm -f tmp/*/*/*
    -rm -f tmp/*/*/*/*

Meno davanti al rm significa "non fermarti sugli errori" (la directory non rimossa restituisce un errore). Se vuoi salvare un livello, rimuovi quella riga, ad es. la seconda riga rm rimuove i log.

Fammi sapere se hai un sistema che fa qualcos'altro (BSD?).

MODIFICA: L'ho provato su Ubuntu 12.04, osx lion e shell sourceforge.net. Tutti si comportano come la spiegazione sopra.


find PATH -maxdepth 1 -type f -delete

MA questo non ti chiederà conferma o produrrà ciò che ha appena cancellato. Pertanto è meglio eseguirlo senza prima l'azione -delete e controllare che siano i file corretti.


Puoi usare find con -type f solo per file e -maxdepth 1 quindi find non cercherà i file nelle sottodirectory di /path/to/directory . rm -i ti chiederà a ogni eliminazione in modo da poter confermare o negare l'eliminazione. Se non ti interessa che ti venga chiesta la conferma di ogni eliminazione, modificala in rm -fv (-f per forza la cancellazione). Il -v flag fa in modo che ad ogni cancellazione venga stampato un messaggio che dice quale file è stato appena cancellato.

find /path/to/directory -maxdepth 1 -type f -exec rm -iv {} \;

Questo dovrebbe soddisfare i criteri:

NON directory
NON sottodirectory
NON file in queste sottodirectory.


Linux
  1. Come caricare o scaricare file/directory utilizzando sFTP in Linux

  2. Copia file e directory in Linux

  3. Come rinominare una directory su Linux

  4. Come rimuovere file e directory nella riga di comando di Linux [Tutorial per principianti]

  5. Linux Elimina file e directory

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

Come copiare file e directory in Linux

Come rimuovere (eliminare) la directory in Linux

Come rimuovere file e directory in Linux

Come rimuovere file e directory su terminale Linux

Nozioni di base sulla riga di comando di Linux:lavorare con file e directory