parcourir des repertoires dans un script

parcourir des repertoires dans un script - Codes et scripts - Linux et OS Alternatifs

Marsh Posté le 27-05-2005 à 17:56:29    

hello,  
 
je suis en train de faire un petit script sur debian pour mettre à jour des données.
 
entre autre il doit aller dans plusieurs repertoires faire un rm -rf
 
j'avais donc mis :
cd /etc/machin/chouette/
rm * -rf
 
 
mais bon ça marche pas.
Visiblement le cd n'est pas interprété comme il devrait l'être.
 
Vous pourriez m'éclairer sur la syntaxe adéquate?
 
Merci :jap:

Reply

Marsh Posté le 27-05-2005 à 17:56:29   

Reply

Marsh Posté le 27-05-2005 à 17:59:48    

rm -rf /etc/machin/chouette/*

 non ?
 
et si tu cherches des fichiers avec des motifs particuliers, pourquoi pas un truc du genre :

find . -iname "*motif*" -exex rm {} \;


Message édité par Mjules le 27-05-2005 à 18:02:03

---------------
Celui qui pose une question est idiot 5 minutes. Celui qui n'en pose pas le reste toute sa vie. |  Membre du grand complot pharmaceutico-médico-scientifico-judéo-maçonnique.
Reply

Marsh Posté le 27-05-2005 à 18:00:13    

for i in /chemin/complet/* ; do [ -d $i ] && rm -rf ; done
 
Je crois que ça fonctionne.


---------------
"The marketing guys said the HP-35 would be a failure because it was too small, and then we couldn't make them fast enough to meet the demand. The marketing folks don't know everything." - Bill Hewlett
Reply

Marsh Posté le 27-05-2005 à 18:03:05    

Mjules a écrit :

rm -rf /etc/machin/chouette/*

 non ?
 
et si tu cherches des fichiers avec des motifs particuliers, pourquoi pas un truc du genre :

find . -iname "*motif*" -exex rm {} \;



 
 
oui, ça marche, mais en fait j'ai pas que ça comme commandes :D

Reply

Marsh Posté le 27-05-2005 à 18:03:39    

YupYup a écrit :

for i in /chemin/complet/* ; do [ -d $i ] && rm -rf ; done
 
Je crois que ça fonctionne.


 
 
 [:wam] ça par contre c'est hyper compliqué :o
 
j't'avouerais que je patauge complètement dans ton explication :o

Reply

Marsh Posté le 27-05-2005 à 18:05:59    

Krapaud a écrit :

oui, ça marche, mais en fait j'ai pas que ça comme commandes :D


Tu les mets dans un script qui accepte un argument : le nom du fichier et son path absolu
Et tu appelles ce script dans le find


---------------
« Ce qui ne vous tue pas vous rend plus fort » F. Nietzsche | « Vise_ la Lune. Si tu rates, au pire, t'es dans la merde » Un poète disparu dans le cercle
Reply

Marsh Posté le 27-05-2005 à 18:06:42    

krapaud : pour tous ce qui est dans chemin/complet/* tester si c'est un repertoire [-d $i] si oui && (et logique) l'effacer
 
faut lire advanced bash scripting :o


Message édité par ory le 27-05-2005 à 18:07:06
Reply

Marsh Posté le 27-05-2005 à 18:12:57    

Ceci dit, la solution du find est meilleure :
 
find /chemin/complet -type d -exec rm -rf {} \;


---------------
"The marketing guys said the HP-35 would be a failure because it was too small, and then we couldn't make them fast enough to meet the demand. The marketing folks don't know everything." - Bill Hewlett
Reply

Marsh Posté le 27-05-2005 à 18:16:19    

YupYup a écrit :

Ceci dit, la solution du find est meilleure :
 
find /chemin/complet -type d -exec rm -rf {} \;


 

Citation :

find /chemin/complet -type d -exec rm -rf '{}' \;


Message édité par ory le 27-05-2005 à 18:16:48
Reply

Marsh Posté le 27-05-2005 à 18:18:31    

Ca fonctionne aussi sans les '' (sous hp-ux en tout cas, j'ai que ça sous la main, mais je suis à peu près sûr que ça passe sous linux)


---------------
"The marketing guys said the HP-35 would be a failure because it was too small, and then we couldn't make them fast enough to meet the demand. The marketing folks don't know everything." - Bill Hewlett
Reply

Marsh Posté le 27-05-2005 à 18:18:31   

Reply

Marsh Posté le 27-05-2005 à 18:19:34    

merci à vous tous :jap:
 
par contre, j'ai encore une petite question.
Dans mon script je fais un chown -R user /truc/bidule/chouette
 
mais il ne le prends pas.
C'est normal?

Reply

Marsh Posté le 27-05-2005 à 18:20:09    

Ton user existe ? Comment détermines-tu qu'il "ne le prend pas" ?


---------------
"The marketing guys said the HP-35 would be a failure because it was too small, and then we couldn't make them fast enough to meet the demand. The marketing folks don't know everything." - Bill Hewlett
Reply

Marsh Posté le 27-05-2005 à 18:21:47    

Krapaud a écrit :

merci à vous tous :jap:
 
par contre, j'ai encore une petite question.
Dans mon script je fais un chown -R user /truc/bidule/chouette
 
mais il ne le prends pas.
C'est normal?


script bien lancé en root ou avec sudo ?


---------------
Celui qui pose une question est idiot 5 minutes. Celui qui n'en pose pas le reste toute sa vie. |  Membre du grand complot pharmaceutico-médico-scientifico-judéo-maçonnique.
Reply

Marsh Posté le 27-05-2005 à 18:27:28    

YupYup a écrit :

Ton user existe ? Comment détermines-tu qu'il "ne le prend pas" ?


oui il existe, quand je le fais manuellement ça marche, mais dans le script ça n'a pas fonctionné :o
 
avec strace j'ai ça :  

stat64("/usr/local/sbin/chown", 0xbffffa10) = -1 ENOENT (No such file or directory)
stat64("/usr/local/bin/chown", 0xbffffa10) = -1 ENOENT (No such file or directory)
stat64("/usr/sbin/chown", 0xbffffa10)   = -1 ENOENT (No such file or directory)
stat64("/usr/bin/chown", 0xbffffa10)    = -1 ENOENT (No such file or directory)
stat64("/sbin/chown", 0xbffffa10)       = -1 ENOENT (No such file or directory)
stat64("/bin/chown", {st_mode=S_IFREG|0755, st_size=34572, ...}) = 0
stat64("/bin/chown", {st_mode=S_IFREG|0755, st_size=34572, ...}) = 0

Reply

Marsh Posté le 27-05-2005 à 18:27:36    

Mjules a écrit :

script bien lancé en root ou avec sudo ?


en root oui :)

Reply

Marsh Posté le 27-05-2005 à 18:37:20    

j'ai trouvé, je suis un crétin des savanes :D
 
bon alors en gros je télécharge un fichier sur internet avec wget, mais avant de dois supprimer son homologue téléchargé un peu plus tot.
D'où le rm.
Ensuite je tar -zxvf le fichier et je déplace son contenu dans un autre repertoire dont j'ai aussi supprimé le contenu.
La je faisais mon chown, mais j'avais oublié que la commande suivante squidGuard -C all générait les fichiers .db, et que c'est eux qui doivent être ouverts par le processus squidguard, donc je faisais mon chown trop tot :D
 
ps->merci :)


Message édité par Krapaud le 27-05-2005 à 18:37:44
Reply

Marsh Posté le 31-05-2005 à 14:13:32    

slt,
est ce que vous pourriez me dire comment on fait pour trouver seulement les dossiers commencant par une majuscule?
 
Thx
++

Reply

Marsh Posté le 31-05-2005 à 14:18:43    

find /chemin -type d -name "[A-Z]*"

 devrait marcher


Message édité par Mjules le 31-05-2005 à 14:19:11

---------------
Celui qui pose une question est idiot 5 minutes. Celui qui n'en pose pas le reste toute sa vie. |  Membre du grand complot pharmaceutico-médico-scientifico-judéo-maçonnique.
Reply

Marsh Posté le 31-05-2005 à 14:20:30    

^[A-Z]* me semble mieux (non testé)


---------------
uptime is for lousy system administrators what Viagra is for impotent people - mes unixeries - github me
Reply

Marsh Posté le 31-05-2005 à 14:24:28    

c'était mon idée initiale, mais ça marche pas avec find chez moi


---------------
Celui qui pose une question est idiot 5 minutes. Celui qui n'en pose pas le reste toute sa vie. |  Membre du grand complot pharmaceutico-médico-scientifico-judéo-maçonnique.
Reply

Marsh Posté le 31-05-2005 à 14:25:43    

merci bcp, ca fonctionne nickel

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed