Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 30/09/2007, à 14:08

yurek

suppression avec un locate

dans le cadre de la documentation je recherche le moyen de supprimer les fichier de sauvegarde (XXX.xx~) avec une commande:
locate *~ | xargs rm

seulement ca ne marche pas avec les fichiers qui contienne des espaces. sans doute il faut afficher les \ pour que ca marche mais je ne trouve pas avec locate.
help.


http://doc.ubuntu-fr.org/installation/debutants
http://doc.ubuntu-fr.org/diagnostic
http://doc.ubuntu-fr.org/diagnostic_outils
http://doc.ubuntu-fr.org/reflexe_ubunteros

Hors ligne

#2 Le 30/09/2007, à 17:19

Yannick_LM

Re : suppression avec un locate

Essayes plutot avec find, plus adapté dans ce cas :

find -name '*~' -print0 | xargs -0 rm

par exemple

Dernière modification par Yannick_LM (Le 30/09/2007, à 17:58)


Trucs et astuces pour Vim
Ma web page  avec des trucs dessus ...

Hors ligne

#3 Le 30/09/2007, à 22:10

yurek

Re : suppression avec un locate

pourquoi le -print0 et le -0 de args j'ai regarder dans le man mais pas compris....


http://doc.ubuntu-fr.org/installation/debutants
http://doc.ubuntu-fr.org/diagnostic
http://doc.ubuntu-fr.org/diagnostic_outils
http://doc.ubuntu-fr.org/reflexe_ubunteros

Hors ligne

#4 Le 01/10/2007, à 18:17

Yannick_LM

Re : suppression avec un locate

En fait, le problème est que les espaces servent aussi à séparer les arguments, par défaut.
Donc quand tu passes le nom de fichier "toto tata" à une fonction f, ça fait deux arguments : toto et tata.
En revanche, avec -print0, les noms de fichiers sont affichés en étant séparé  par le caractère special \00 (qui ne vaut pas le chiffre 0), et avec -0, tu dis à xargs que \00 sert aussi à séparer les arguments.


Dans un script bash, la variables qui s'occupe de ça, c'est IFS (input file separator), par défaut, elle vaut tout type d'espace (tab et newline compris), ce qui pose parfois problème, et ça peut être parfois une bonne idée de mettre IFS="
"
en début d'un script pour éviter ce genre d'ennui.
(Il te suffit d'avoir des entrées coportant un nom de fichier par ligne, telle que tu peux les obtenir en sortie de ls, find, et autres)


Trucs et astuces pour Vim
Ma web page  avec des trucs dessus ...

Hors ligne

#5 Le 01/10/2007, à 19:06

yurek

Re : suppression avec un locate

ok compris merci.
et sinon avec un ls l'argument pour afficher les \ c'est lequels?

Dernière modification par yurek (Le 01/10/2007, à 19:07)


http://doc.ubuntu-fr.org/installation/debutants
http://doc.ubuntu-fr.org/diagnostic
http://doc.ubuntu-fr.org/diagnostic_outils
http://doc.ubuntu-fr.org/reflexe_ubunteros

Hors ligne

#6 Le 01/10/2007, à 19:11

yurek

Re : suppression avec un locate

ls -b merci quand meme j'ai tourvé!:cool:


http://doc.ubuntu-fr.org/installation/debutants
http://doc.ubuntu-fr.org/diagnostic
http://doc.ubuntu-fr.org/diagnostic_outils
http://doc.ubuntu-fr.org/reflexe_ubunteros

Hors ligne

#7 Le 01/10/2007, à 21:09

naholyr

Re : suppression avec un locate

Super le $IFS, le -print0, etc… Une mine d'or ce post wink

Au passage en revanche, les bidouilles sont parfois inutiles, la commande "find" a une option merveilleuse "-delete", qui sert à ça smile

find -name '*~' -delete

Dernière modification par naholyr (Le 01/10/2007, à 21:13)

Hors ligne

#8 Le 01/10/2007, à 23:27

yurek

Re : suppression avec un locate

OOO excellent.


http://doc.ubuntu-fr.org/installation/debutants
http://doc.ubuntu-fr.org/diagnostic
http://doc.ubuntu-fr.org/diagnostic_outils
http://doc.ubuntu-fr.org/reflexe_ubunteros

Hors ligne

#9 Le 01/10/2007, à 23:28

yurek

Re : suppression avec un locate

je me demande comment on fait avec un locate ?? est ce incompatible avec des espace dans les noms des fichiers ?


http://doc.ubuntu-fr.org/installation/debutants
http://doc.ubuntu-fr.org/diagnostic
http://doc.ubuntu-fr.org/diagnostic_outils
http://doc.ubuntu-fr.org/reflexe_ubunteros

Hors ligne

#10 Le 02/10/2007, à 19:26

lothei

Re : suppression avec un locate

Hmm peut etre

locate *~ | sed -e 's/ /\\ /g' | xargs rm

Ca remplace les espaces par des espaces précédés d'un anti slash

Dernière modification par lothei (Le 03/10/2007, à 20:57)

Hors ligne

#11 Le 02/10/2007, à 20:40

yurek

Re : suppression avec un locate

merci ca marche.

locate *~ plutot??
Pourrait tu m'expliquer les options -e 's// /\\ /g' s'il te plais?

Dernière modification par yurek (Le 02/10/2007, à 20:41)


http://doc.ubuntu-fr.org/installation/debutants
http://doc.ubuntu-fr.org/diagnostic
http://doc.ubuntu-fr.org/diagnostic_outils
http://doc.ubuntu-fr.org/reflexe_ubunteros

Hors ligne

#12 Le 03/10/2007, à 07:51

lothei

Re : suppression avec un locate

heu, man sed smile
Non sérieusement je ne sais pas trop, je copie/colle toujours cette commande que j'ai trouvé sur internet qui sert à remplacer des caractères :
sed -e 's///g'
Avec entre le 1er et 2eme / la chaine à rechercher (ici un espace), et entre le 2eme et 3eme / la chaine remplacante (ici un \ suivant d'un espace) ,le tout en expresssion régulière

Sinon effectivement, j'ai inversé les deux caractères ~ et * (je faisais mes tests sur une autre chaine)

*edit*
Je remarque que ceci est peut être plus judicieux comme code :

locate -r ~$ | sed -e 's/ /\\ /g' | xargs rm

Car ça permet de ne prendre que les fichiers qui contiennent le caractère ~ en fin de nom (l'autre syntaxe prends au final tous les fichiers qui contiennent ~ j'ai l'impression)
Dans cette syntaxe le -r sert à préciser que le locate se fait avec une expression régulière, et le ~$ signifie que l'on veut le caractère ~ en fin de chaine.

Dernière modification par lothei (Le 03/10/2007, à 21:08)

Hors ligne

#13 Le 10/10/2007, à 16:33

yurek

Re : suppression avec un locate

si j'ai bien compris si on affiche tous les *~ ca ferait
sed -e *~ 's/ /\\ /g'
le premier espace pour ce qu'il y a avant les *~ et le "\  " pour les noms des fichier qui auraient des espaces c'est bien ca?


http://doc.ubuntu-fr.org/installation/debutants
http://doc.ubuntu-fr.org/diagnostic
http://doc.ubuntu-fr.org/diagnostic_outils
http://doc.ubuntu-fr.org/reflexe_ubunteros

Hors ligne

#14 Le 15/10/2007, à 14:11

naholyr

Re : suppression avec un locate

locate utilise une base de données d'indexation des fichiers, donc avant de faire un locate si tu veux être sûr d'avoir un résultat bien à jour il faut faire un appel à updatedb (en superuser) :
- c'est long
- ça nécessite d'être superuser

Alors que find fera très bien le travail sur une arborescence limitée.

Hors ligne