Pages : 1
#1 Le 30/09/2007, à 13: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, à 16: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, à 16:58)
Trucs et astuces pour Vim
Ma web page avec des trucs dessus ...
Hors ligne
#3 Le 30/09/2007, à 21: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, à 17: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, à 18: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, à 18: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, à 18: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, à 20:09
- naholyr
Re : suppression avec un locate
Super le $IFS, le -print0, etc… Une mine d'or ce post
Au passage en revanche, les bidouilles sont parfois inutiles, la commande "find" a une option merveilleuse "-delete", qui sert à ça
find -name '*~' -delete
Dernière modification par naholyr (Le 01/10/2007, à 20:13)
Messagerie instantanée : naholyr@jabber.fr
Envoyer vos images sur le web d'un clic !
Choix du système à rebooter (graphique)
Hors ligne
#8 Le 01/10/2007, à 22: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, à 22: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, à 18: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, à 19:57)
Hors ligne
#11 Le 02/10/2007, à 19: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, à 19: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, à 06:51
- lothei
Re : suppression avec un locate
heu, man sed
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, à 20:08)
Hors ligne
#13 Le 10/10/2007, à 15: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, à 13: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.
Messagerie instantanée : naholyr@jabber.fr
Envoyer vos images sur le web d'un clic !
Choix du système à rebooter (graphique)
Hors ligne
Pages : 1