#1 Le 10/10/2011, à 10:22
- Dominique49
[résolu] Problème pour supprimer fichier en shell
Salut,
ça fait une heure que je peste contre un script qui marche mal ..
voilà, je voudrais supprimer tout les fichiers se terminant par .java.latin1
voici le code :
find . -name *.java.latin1 | while read f
do
echo "supression de $f ..."
rm -f $f
done
echo "Fin du traitement."
read
bon, les fichiers sont bien trouvés, mais pas supprimés !
j'ai pourtant tout les droits nécessaire (je me suis mis en mode root pour être sur) ...
j'ai tout essayé, pas moyen, où est l'erreur ?!
Merci d'avance.
Dernière modification par Dominique49 (Le 10/10/2011, à 11:08)
Maths spé - Lycée Camille Guérin
Hors ligne
#2 Le 10/10/2011, à 10:42
- pingouinux
Re : [résolu] Problème pour supprimer fichier en shell
Bonjour,
Je ferais comme ceci :
find . -name \*.java.latin1 -exec rm -f {} \;
Ajouté
Pour faire marcher le script :
find . -name \*.java.latin1 | while read f
do
echo "supression de $f ..."
rm -f $f
done
echo "Fin du traitement."
read
Dernière modification par pingouinux (Le 10/10/2011, à 10:49)
Hors ligne
#3 Le 10/10/2011, à 11:01
- Dominique49
Re : [résolu] Problème pour supprimer fichier en shell
merci beaucoup,
j'avais recopié ce code sur internet et je l'ai modifié (au départ c'était pour lister le contenu d'un répertoire).
merci, j'essaye avec ça, mais juste une une qestion, quelle est la différence entre \*.java.latin1 et *.java.latin1 ?
et puis le echo m'affichait bien le bon chemin d'accès au fichier pourtant ?!
ça fait rien, j'essaye tout de suite.
merci beaucoup.
Maths spé - Lycée Camille Guérin
Hors ligne
#4 Le 10/10/2011, à 11:07
- Dominique49
Re : [résolu] Problème pour supprimer fichier en shell
Salut, le deuxième code (le plus long) ne marche pas, et tente apparemment de supprimer les dossier contenant les fichiers ciblés, car la console affiche "ipossible de supprimer "./Organizator/" car c'est un dossier.
a savoir que Organizator contient des fichiers *.java.latin1
Par contre, ton premier code marche du tonnerre, bravo !
personnellement, je ne connais pas encore assez shell pour comprendre ton code ... (je suis sur ubuntu depuis hier seulement , suite à un crash de window ...)
merci encore.
Dominique.
Maths spé - Lycée Camille Guérin
Hors ligne
#5 Le 10/10/2011, à 12:43
- pingouinux
Re : [résolu] Problème pour supprimer fichier en shell
Bienvenue sur Ubuntu
quelle est la différence entre \*.java.latin1 et *.java.latin1 ?
Si le répertoire dans lequel on se trouve ne contient pas de fichiers quelque_chose.java.latin1, il n'y a pas de différence.
S'il en contient, il y aura l'expansion de *.java.latin1, et la commande sera erronée. D'où le \*, par prudence dans tous les cas.
"ipossible de supprimer "./Organizator/" car c'est un dossier.
Je pense qu'il y a des noms de fichiers qui contiennent des espaces. Il faudrait corriger la ligne contenant le rm :
rm -f "$f"
Et pour n'avoir que les fichiers (problème seulement si un dossier se termine par .java.latin1) :
find . -type f -name \*.java.latin1 | while read f
Hors ligne
#6 Le 10/10/2011, à 14:10
- Dominique49
Re : [résolu] Problème pour supprimer fichier en shell
Merci,
effectivement il y a des espace, ce qui m'a fait cherché (j'ai fini par trouver en entourant avec des guillemets) ...
merci beaucoup, à bientôt.
Dominique.
Maths spé - Lycée Camille Guérin
Hors ligne
#7 Le 10/10/2011, à 14:42
- pingouinux
Re : [résolu] Problème pour supprimer fichier en shell
Pour voir les espaces et les caractères folkloriques dans les noms de fichiers :
ls -b
mais mieux vaut éviter ces caractères, pour s'épargner bien des ennuis par la suite.
Hors ligne
#8 Le 11/10/2011, à 11:58
- Dominique49
Re : [résolu] Problème pour supprimer fichier en shell
oui, je le savais, seulement ça avait été créé automatiquement par Eclipse ...
solution, pas d'espace dans les noms de projets Eclipse
merci, à bientôt.
Maths spé - Lycée Camille Guérin
Hors ligne