GNU/Linux >> Tutoriels Linux >  >> Linux

Supprimer uniquement les fichiers dans le répertoire sous linux PAS les répertoires

Comme c'est élevé sur la recherche Google, la réponse la plus simple est :

rm $directoryPath/*

où $directoryPath est le répertoire que vous souhaitez vider. Les crédits devraient aller à cbm3384 (qui, pour une raison quelconque, a obtenu des votes négatifs pour cette réponse, pourquoi ?)

Si vous ne souhaitez pas confirmer :

rm -f $directoryPath/*

Si vous ne croyez pas essayez man rm ou

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/*

Ce qui précède crée une structure de répertoire, qui a 'helloX.txt' dans chaque dossier (X est le niveau du répertoire). rm 1/2/* supprime hello2.txt et laisse l'autre structure intacte.

Aussi rm */*/* supprime uniquement hello2.txt . C'est le seul qui correspond au motif.

Juste un exemple de Makefile qui nettoie le répertoire tmp de cakephp et laisse la structure du répertoire intacte :

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

Moins devant le rm signifie "ne pas s'arrêter en cas d'erreur" (le répertoire non supprimé renvoie une erreur). Si vous voulez qu'un niveau soit enregistré, supprimez simplement cette ligne, par ex. la deuxième ligne rm supprime les journaux.

Faites-moi savoir si vous avez un système qui fait autre chose (BSD ?).

MODIF : J'ai testé ceci sur ubuntu 12.04, osx lion et sourceforge.net shell. Tous se comportent comme l'explication ci-dessus.


find PATH -maxdepth 1 -type f -delete

MAIS cela ne vous demandera pas de confirmation ou de sortie ce qu'il vient de supprimer. Par conséquent, il est préférable de l'exécuter d'abord sans l'action -delete et de vérifier qu'il s'agit des bons fichiers.


Vous pouvez utiliser find avec -type f pour les fichiers uniquement et -maxdepth 1 donc find ne recherchera pas les fichiers dans les sous-répertoires de /path/to/directory . rm -i vous invitera à chaque suppression afin que vous puissiez confirmer ou refuser la suppression. Si vous ne vous souciez pas d'être invité à confirmer chaque suppression, remplacez-le par rm -fv (-f pour forcer la suppression). Le -v flag fait en sorte qu'à chaque suppression, un message s'affiche indiquant quel fichier vient d'être supprimé.

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

Cela doit répondre aux critères :

PAS de répertoires
PAS de sous-répertoires
PAS les fichiers dans ces sous-répertoires.


Linux
  1. Comment télécharger ou télécharger des fichiers/répertoires à l'aide de sFTP sous Linux

  2. Comment trouver un fichier sous Linux dans tous les répertoires de manière récursive

  3. Comment supprimer des fichiers et des répertoires dans la ligne de commande Linux [Tutoriel du débutant]

  4. Linux Supprimer des fichiers et des répertoires

  5. Nombre maximum de fichiers/répertoires sous Linux ?

Comment supprimer des fichiers et des répertoires à l'aide de la ligne de commande Linux

Comment copier des fichiers et des répertoires sous Linux

Comment supprimer (supprimer) le répertoire sous Linux

Comment supprimer des fichiers et des répertoires sous Linux

Comment supprimer des fichiers et des répertoires sur un terminal Linux

Principes de base de la ligne de commande Linux - Travailler avec des fichiers et des répertoires