La Fibre

Télécom => Logiciels et systèmes d'exploitation => Linux Linux => Discussion démarrée par: vivien le 27 août 2013 à 16:44:46

Titre: rm sous linux : Comment supprimer tous les fichiers d'un dossier ?
Posté par: vivien le 27 août 2013 à 16:44:46
Commande "rm" : Comment supprimer tous les fichiers d'un dossier ?

Je propose un ftp en écriture pour tester son débit : ftp://1.testdebit.info/montant/

N'ayant pas réussi a demander a ProFTPd de placer le dossier accessible en écriture dans /dev/null (cela me met une erreur), je supprime tous els 15 secondes les fichiers (ce n'est pas problématique de supprimer un fichier alors que son upload n'est pas terminé)

Comment en une seule commande supprimer tous les fichiers de ce dossier ?

Les commandes suivantes n'effacent pas les fichiers cachés :

* * * * * /bin/rm -rf /home/vgu/testdebit.info/fichiers/montant/*
* * * * * /bin/sleep 15 ; /bin/rm -rf /home/testdebit.info/fichiers/montant/*
* * * * * /bin/sleep 30 ; /bin/rm -rf /home/testdebit.info/fichiers/montant/*
* * * * * /bin/sleep 45 ; /bin/rm -rf /home/testdebit.info/fichiers/montant/*

rm -rf * => efface tous les fichiers sauf les fichiers cachés (qui commencent par un point sous unix)
rm -rf *.* => efface tous les fichiers sauf les fichiers cachés
rm -rf .* => efface uniquement les fichiers cachés

Bref auriez-vous une commande simple pour effacer tous les fichiers (cachés ou non) d'un coup ?
Titre: rm sous linux : Comment supprimer tous les fichiers d'un dossier ?
Posté par: thenico le 27 août 2013 à 19:23:50
Bref auriez-vous une commande simple pour effacer tous les fichiers (cachés ou non) d'un coup ?
find /path -type f -delete
Titre: Globbing
Posté par: corrector le 27 août 2013 à 20:43:32
Déjà, les globs valables dépendent du shell.

Traditionnellement les noms de fichiers commençant par "." sont traités spécialement (mais pas les chaines : [[ ".x" = * ]]).

En zsh, tu as l'option GLOB_DOTS pour contrôler ce comportement, ainsi tu peux au niveau de tout un script désactiver cette particularité.

Les options de motif permettent de contrôle le comportement d'un motif en particulier : l'option (D) active GLOB_DOTS pour le motif en question.

À noter que les noms de répertoire spéciaux . et .. ne sont jamais trouvés par un motif.

* * * * * /bin/rm -rf /home/vgu/testdebit.info/fichiers/montant/*
* * * * * /bin/sleep 15 ; /bin/rm -rf /home/testdebit.info/fichiers/montant/*
* * * * * /bin/sleep 30 ; /bin/rm -rf /home/testdebit.info/fichiers/montant/*
* * * * * /bin/sleep 45 ; /bin/rm -rf /home/testdebit.info/fichiers/montant/*

rm -rf * => efface tous les fichiers sauf les fichiers cachés (qui commencent par un point sous unix)
rm -rf *.* => efface tous les fichiers sauf les fichiers cachés
Non, efface les fichiers dont le nom comporte un point. "*" peut correspondre à rien.

En général, l'englobement échoue s'il n'y aucun nom de fichier valable. Pour obtenir une liste vide, zsh propose l'option NULL_GLOB ou le suffixe (N).

bash propose des options similaires.
Titre: rm sous linux : Comment supprimer tous les fichiers d'un dossier ?
Posté par: vivien le 27 août 2013 à 21:10:17
en pratique je mets quoi pour que rm * efface les fichiers cachés ?
je suis preneur d'un exemple sous dash (the Debian Almquist Shell).
bash n'est plus utilisé pour les scripts car trop long a se charger => https://wiki.ubuntu.com/DashAsBinSh
Titre: rm sous linux : Comment supprimer tous les fichiers d'un dossier ?
Posté par: corrector le 27 août 2013 à 21:32:20
zsh -c "rm /path/*(D)"