IPB

Bienvenue invité ( Connexion | Inscription )

> Programmation

Il est interdit de poster directement à la racine de ce forum.
Veuillez créer votre topic dans le sous-forum approprié.

4 Pages V   1 2 3 > »   
Reply to this topicStart new topic
> Questions diverses à propos du shell, scripts et commandes ?
Options
fanatikmaya
posté 11 Jan 2004, 13:23
Message #1


Macbidouilleur de vermeil !
****

Groupe : Membres
Messages : 1 226
Inscrit : 6 Oct 2003
Membre no 10 153



Voilà je suis en train de faire un petit sous programme via le terminal(rien de bien méchant,50 lignes)executable en sh.
Je sais que la commande cmp sert à comparer deux fichiers tel que(dans mon cas):
if cmp fichier1 fichier2 ; then
rm fichier2
fi
Or j'aimerais écrire une commande en lui disant:si il y a deux fichier identiques supprime le deuxieme
Ici je lui disais que si les fichier1 et fichier2 sont identiques supprime le fichier2.
(il y a une petite nuance importante)
Quelle est la commande?
Merci smile.gif

Ce message a été modifié par fanatikmaya - 11 Jan 2004, 13:24.


--------------------
Image IPB
Go to the top of the page
 
+Quote Post
julious
posté 11 Jan 2004, 14:36
Message #2


Macbidouilleur d'Or !
*****

Groupe : Membres
Messages : 3 357
Inscrit : 16 Aug 2001
Lieu : dernier de la classe
Membre no 638



J'ai du mal à voir la "petite nuance"...


--------------------
Make something idiot proof and the world will make a better idiot.
Go to the top of the page
 
+Quote Post
Driden
posté 11 Jan 2004, 14:38
Message #3


Macbidouilleur de vermeil !
****

Groupe : Membres
Messages : 1 318
Inscrit : 7 May 2003
Lieu : Ile de France (92)
Membre no 7 472



Si ils sont identiques qu'il supprime le 1 ou le 2 n'a pas vraiment d'importance.


--------------------

@+ Driden
Go to the top of the page
 
+Quote Post
fanatikmaya
posté 11 Jan 2004, 14:45
Message #4


Macbidouilleur de vermeil !
****

Groupe : Membres
Messages : 1 226
Inscrit : 6 Oct 2003
Membre no 10 153



Oui,l'important n'est pas là,je vais essayé de le formuler autrement unsure.gif

Euuuuh…
Ce qui m'interresse pas:si le fichier f1 est identique au fichier f2,supprimer f2(ou f1 peu importe)

Donc dans ce cas la je les supprime en les NOMMANTS!!!(f1 peux très bien s'appeller bonjour.txt…)

MAIS dans l'autre cas je luis dis:si il existe deux fichiers identiques supprime les(je ne désigne aucun fichier).

Dites moi que vous avez compris sad.gif sad.gif sad.gif biggrin.gif


--------------------
Image IPB
Go to the top of the page
 
+Quote Post
Driden
posté 11 Jan 2004, 15:00
Message #5


Macbidouilleur de vermeil !
****

Groupe : Membres
Messages : 1 318
Inscrit : 7 May 2003
Lieu : Ile de France (92)
Membre no 7 472



Dsl mais j'ai tjs rien compris sad.gif

Quoique, tu veux choisir celui qui va etre supprimé c'est ça ?

Ce message a été modifié par Driden - 11 Jan 2004, 15:01.


--------------------

@+ Driden
Go to the top of the page
 
+Quote Post
fanatikmaya
posté 11 Jan 2004, 15:09
Message #6


Macbidouilleur de vermeil !
****

Groupe : Membres
Messages : 1 226
Inscrit : 6 Oct 2003
Membre no 10 153



NON!!!
C'est pas ça bon cherchons un autre exemple plus simple,shématique unsure.gif
Euuuuh…je sais pas comment expliquer moi.
Par exemple:si dans une piece je sais qu'il y a deux truc identique(feuilles)j'en jete une à la poubelle!si feuille 1 pareille que feuille 2 je jete feuille 2.


MAIS MAINTENANT(surtout concentez vous bien c'est le moment le plus important),si il y a deux objets identique,mais que je vois pas,donc je peux pas les nommer,je voudrais que mon sous prog les vois et les supprime.

C'est bon? unsure.gif


--------------------
Image IPB
Go to the top of the page
 
+Quote Post
ploute
posté 11 Jan 2004, 15:16
Message #7


Macbidouilleur de vermeil !
****

Groupe : Membres
Messages : 1 292
Inscrit : 25 Apr 2003
Membre no 7 294



AAAAAH g ptêt compris... Mais pfiou je t'assure que ce que tu avais dit jusqu'à présent ne permettait pas de capter...

Tu veux appliquer ce programme à quoi ? Une liste de fichiers ? Un répertoire ? Récursivement dans un répertoire ? (bon tout ça c'est moins important, mais faut savoir pour pouvoir implémenter : dans les 2 premiers cas c'est chiant mais ça se fait, dans le 2ème c'est pire que chiant... m'enfin ça se fait aussi, juste une étape de plus)

-> faut comparer tous les couples possibles non ?
Ptet pour optimiser contrôler la taille du fichier d'abord ?

EDIT :
- euh d'après ce que tu dis, il faut supprimer les 2 fichiers... t'es sûr ?
- avant de chercher plus loin, imagine le cas où N fichiers sont identiques... rien ne l'interdit : on supprime les N ? (ou bien N-1 comme il semblerait plus logique a première vue)

Ce message a été modifié par ploute - 11 Jan 2004, 15:19.
Go to the top of the page
 
+Quote Post
fanatikmaya
posté 11 Jan 2004, 15:21
Message #8


Macbidouilleur de vermeil !
****

Groupe : Membres
Messages : 1 226
Inscrit : 6 Oct 2003
Membre no 10 153



Ah enfin cool.gif
J'avoue que je vois pas très bien ce que c'est la notion de repertoire,etc… unsure.gif
Mais j'explique,je veux que,si il voit dans un dossier deux fichiers identiques il les vire.

Euuuh…ça repond à ta question ploute?

EDIT:
Pas les deux mais UN des deux. smile.gif

Ce message a été modifié par fanatikmaya - 11 Jan 2004, 15:22.


--------------------
Image IPB
Go to the top of the page
 
+Quote Post
ploute
posté 11 Jan 2004, 15:27
Message #9


Macbidouilleur de vermeil !
****

Groupe : Membres
Messages : 1 292
Inscrit : 25 Apr 2003
Membre no 7 294



Euh presque smile.gif

D'abord "répertoire" = "dossier", excuse-moi.

Pour ta réponse, je demande ce que tu veux entrer en paramètre du programme : quand tu dis "quand il voit dans un dossier" je demande "quel dossier" ? C'est toi qui lui désignes ce dossier ? Ou bien désignes-tu un volume (par exemple) ou un dossier et il va chercher dans tous les sous-dossiers ? Bon c'est pas très grave, l'important maintenant on l'a compris.

Idée :
- lister les fichiers du dossier en les classant par taille. (très rapide avec ls)
les fichiers de même taille sont alors "groupés", et ce sont ceux qui sont susceptibles d'être identiques.
- On parcourt la liste, et si le fichier courant est de même taille que le précédent, on les compare avec cmp, le cas échéant on efface (tu confirmes pour effacer LES DEUX ? EDIT : aaah ok UN DES DEUX... wink.gif )

Fini. Ca marche avec 2 mais pas avec N, c'est un tout petit peu plus compliqué mais pas très dur. Confirme-nous tout ça et là je veux bien pondre un script sh.

Ce message a été modifié par ploute - 11 Jan 2004, 15:28.
Go to the top of the page
 
+Quote Post
fanatikmaya
posté 11 Jan 2004, 15:34
Message #10


Macbidouilleur de vermeil !
****

Groupe : Membres
Messages : 1 226
Inscrit : 6 Oct 2003
Membre no 10 153



Donc tu me donne pas la suite de commande à taper.
C'est une aide,ok je me met au boulot smile.gif


--------------------
Image IPB
Go to the top of the page
 
+Quote Post
ploute
posté 11 Jan 2004, 15:42
Message #11


Macbidouilleur de vermeil !
****

Groupe : Membres
Messages : 1 292
Inscrit : 25 Apr 2003
Membre no 7 294



Euh c'est pas que je ne veux pas te la donner !
Je ne la connais pas encore... J'ai juste expliqué un "algorithme" en français avant de se prendre la tête à coder.

Pour avoir la liste ordonnée, un exemple :
CODE
/bin/ls -l DOSSIERCIBLE| awk '{print $5,$9}'|sort -n

DOSSIERCIBLE peut être remplacé par $1 : ce sera l'argument de la commande tapée dans le terminal. Euuh j'y pense : tu comptes faire un script n'est-ce pas ? Parce qu'une bete suite de commandes à taper dans le terminal, je te le conseilel pas... Y'a sûrement une solution bien timbrée avec des for ou chaispaquoiencore mais a priori, euh, comment dire... laisse tomber smile.gif

Mais bon, s'il y a des sous-dossiers le ls ci-desuss va les lister aussi, alors que tu n'e veux peut-être pas... il va falloir filtrer.

je retire ce que j'ai dit en qualifiant ça de "pas très dur" biggrin.gif J'ai fait pire, mais quand-meme ph34r.gif
Go to the top of the page
 
+Quote Post
fanatikmaya
posté 11 Jan 2004, 15:50
Message #12


Macbidouilleur de vermeil !
****

Groupe : Membres
Messages : 1 226
Inscrit : 6 Oct 2003
Membre no 10 153



Oui excuse moi c'était l'iddée. sad.gif

Mais non je laisserais pas tomber!!!!! mad.gif mad.gif

Sinon je dois utiliser awk?
Pffff je croyais que ça allait être moins compliqué. dry.gif
Est-il possible d'utliser comm et cmp,oui je suppose mais à mon avis c'est une très mauvaise iddée,c'est déjà assez compliqué comme ça biggrin.gif
Merci de ton aide en totu cas et de ta patience. smile.gif
EDIT:
Euuuh…quel est l'interret de bin?

Ce message a été modifié par fanatikmaya - 11 Jan 2004, 15:53.


--------------------
Image IPB
Go to the top of the page
 
+Quote Post
ploute
posté 11 Jan 2004, 15:59
Message #13


Macbidouilleur de vermeil !
****

Groupe : Membres
Messages : 1 292
Inscrit : 25 Apr 2003
Membre no 7 294



L'intérêt de spécifier /bin/ls au lieu de ls c'est d'être sûr d'utiliser le ls de base et pas un autre qui serait privilégié par le PATH, ou bien aliasé pour affichier des petits zigouigouis en plus comme les '*' à la fin des fichiers exécutables, les '/' à la fin des dossiers, les '@' pour les liens symboliques, etc. Si tu as fait "alias ls 'ls -f'" par exemple.

Bon j'en suis là, c'est un début :
CODE
#!/bin/sh

liste=`/bin/ls -l $1 | awk '{print $5,$9}'|sort -n`

#flag vaut 0 si 'truc' est la taille, 1 si 'truc' est le fichier
flag=0

taille=-1
lastsize=-1
lastfile="/dev/null"

for truc in $liste
do
#  echo $flag
 if [ $flag == 0 ]; then
   # On a la taille, on la memorise pour le prochain "truc" qui sera le fichier correspondant
   flag=1
   lastsize=$taille
   taille=$truc
 else
   flag=0
   if [ -f "$truc" ]; then
     lastfile=$fichier
     fichier=$truc
     echo "$fichier pese $taille"
     if [ "$taille" = "$lastsize" ]; then
        echo "Oh il est de la meme taille que $lastfile, comparons-les :"
        comparaison=`cmp $fichier $lastfile`
        if [ "$comparaison" = "" ]; then
          echo "Gagne... $fichier et $lastfile sont identiques."
          mv $lastfile "${fichier}_A_EFFACER"
        else
          echo "Perdu, ok au suivant"
        fi
     fi
   else
     echo "$truc n'est pas un fichier"
   fi
 fi

done
Attention il faut lui donner un nom de dossier absolu, pas relatif (par exemple l'appeler avec ../../bidule ne marchera pas)

Bon, et est-il possible que 3 fichiers soient identiques ? C'est super probable que ce soit possible, mais si dans ton cas précis ça n'arrive jamais, alors ci-desuss tu as tout ce qu'il te faut je pense smile.gif Soit tu remplaces le mv par un rm, soit tu gardes ça tel quel et ensuite tu recherches avec le Finder les fichiers dont le nom contient "_A_EFFACER" et tu les mets à la corbeille.
(attention si tu utilises ça, dans la version précédente avant edit j'ai fait une petite erreur)

YEAH, la version ci-dessus est un tout petit peu plus intelligente et semble fonctionner avec N fichiers. ATTENTION si tu changes le code de renommage ou effaçage des doublons, il faut absolument renommer ou effacer $lastfile et pas $fichier : il faut faire ça pour etre capable de tester le fichier suivant, s'il n'est pas un 3ème fichier identique.

Utilisation : tu ranges ça dans un fichier, tu l'appelles comme tu veux mais disons mycmp.sh :
CODE
chmod 755 mycmp.sh
pour le rendre exécutable
CODE
mycmp.sh DOSSIER_CIBLE
pour le lancer. Attention je répète : la cible doit être spécifiée en chemin absolu, pas relatif.

Cheers

Ce message a été modifié par ploute - 11 Jan 2004, 16:25.
Go to the top of the page
 
+Quote Post
fanatikmaya
posté 11 Jan 2004, 16:23
Message #14


Macbidouilleur de vermeil !
****

Groupe : Membres
Messages : 1 226
Inscrit : 6 Oct 2003
Membre no 10 153



Pouuuuf…!!! blink.gif
Tout ça?Il y a quelques truc qui m'échappent mais je vais surement comprendre en le tapant. smile.gif
Merci,merci beaucoup,je vais essayer ça tout de suite. smile.gif smile.gif smile.gif


--------------------
Image IPB
Go to the top of the page
 
+Quote Post
molgow
posté 11 Jan 2004, 16:27
Message #15


Adepte de Macbidouille
*

Groupe : Membres
Messages : 178
Inscrit : 14 Jun 2003
Lieu : Suisse
Membre no 8 064



Que se passe-t-il si l'on compare 2 dossiers avec la commande "cmp" ?

Il faudrait veiller à ne pas effacer des dossiers qui auraient la même taille (sur Unix les dossiers ont souvent la même taille) mais pas du tout le même contenu ni la même taille réelle.
Go to the top of the page
 
+Quote Post
fanatikmaya
posté 11 Jan 2004, 16:29
Message #16


Macbidouilleur de vermeil !
****

Groupe : Membres
Messages : 1 226
Inscrit : 6 Oct 2003
Membre no 10 153



QUOTE (molgow @ 11 Jan 2004, 17:27)
Que se passe-t-il si l'on compare 2 dossiers avec la commande "cmp" ?

Il faudrait veiller à ne pas effacer des dossiers qui auraient la même taille (sur Unix les dossiers ont souvent la même taille) mais pas du tout le même contenu ni la même taille réelle.

Il se passe rien si tu compare. biggrin.gif

Par contre si tu compare et tu lui demande d'en supprimer 1 si ils sont identiques un des deux est supprimé. smile.gif

EDIT:
En tout cas si ça marche ploute je dis bravo!!! blink.gif ,parce que pour trouver ça!poufff.

Ce message a été modifié par fanatikmaya - 11 Jan 2004, 16:32.


--------------------
Image IPB
Go to the top of the page
 
+Quote Post
ploute
posté 11 Jan 2004, 16:31
Message #17


Macbidouilleur de vermeil !
****

Groupe : Membres
Messages : 1 292
Inscrit : 25 Apr 2003
Membre no 7 294



Euh c'est pas la peine de le taper, copie-colle ça dans un fichier texte... (attention pas de RTF avec TextEdit !)... je dis ça des fois que tu tenterais ligne par ligne dans le terminal : c'est pas comme ç aque ça amrche. Cf utilisation ci-dessus, tapée après edit que tu as ptêt loupé smile.gif

EDIT : si vous lisez bien, pour le coup des sous-dossiers, ils ne sont pas pris en compte par mon script.

Ce message a été modifié par ploute - 11 Jan 2004, 16:34.
Go to the top of the page
 
+Quote Post
fanatikmaya
posté 11 Jan 2004, 16:35
Message #18


Macbidouilleur de vermeil !
****

Groupe : Membres
Messages : 1 226
Inscrit : 6 Oct 2003
Membre no 10 153



QUOTE (ploute @ 11 Jan 2004, 17:31)
Euh c'est pas la peine de le taper, copie-colle ça dans un fichier texte... (attention pas de RTF avec TextEdit !)... je dis ça des fois que tu tenterais ligne par ligne dans le terminal : c'est pas comme ç aque ça amrche. Cf utilisation ci-dessus, tapée après edit que tu as ptêt loupé smile.gif

J'ai même pas pensé à le copier coller donc... laugh.gif
En plus mon internet est sur l'iMac et mon sous_prog est sur mon G4.
Et il y aurais aucun interret. dry.gif
J'aime bien comprendre ce que je tape quand même. smile.gif


--------------------
Image IPB
Go to the top of the page
 
+Quote Post
fanatikmaya
posté 11 Jan 2004, 17:30
Message #19


Macbidouilleur de vermeil !
****

Groupe : Membres
Messages : 1 226
Inscrit : 6 Oct 2003
Membre no 10 153



À quoi sert sort -n?
Et aussi que veut dire le -f dans if [ -f "$truc" ] ; then
Mais je vais mettre ce script dans l'autre script qui est mon sous programme:
1 ) mycmp.sh ;;
Mais mon probleme c'est que je ne veux pas qui s'execute mais je veux pouvoir placer le dossier cible.

Comment faire?(je sais queje pose beaucoup de question mais c'est important pour moi ph34r.gif )

PS:je n'ai pas encore essayé ton script,je révisais l'utilisation de awk.
smile.gif

EDIT:j'ai essayé ton script ça a l'air d'être pas mal sauf que j'ai un petit prob il me dis pour chaque fichier que ce n'est pas un fichier.Pourtant ce sont des fichiers rtf. unsure.gif

Ce message a été modifié par fanatikmaya - 11 Jan 2004, 19:10.


--------------------
Image IPB
Go to the top of the page
 
+Quote Post
ploute
posté 11 Jan 2004, 21:13
Message #20


Macbidouilleur de vermeil !
****

Groupe : Membres
Messages : 1 292
Inscrit : 25 Apr 2003
Membre no 7 294



sort -n c'est pour trier la liste des fichiers par ordre (numérique et pas alphabétique) de taille. Le awk sert à choisir les colonnes "nom" et "taille" de la sortie du ls, pour que le sort puisse trier tout ça.

Le "-f" ça teste si c'est un fichier (et pas un dossier).

Euh chez moi quand ça dit pour chaque fichier que ce n'en estpas u nc'est que j'ai entré un argument de dossier relatif... genre "../dossier" unsure.gif
Go to the top of the page
 
+Quote Post
fanatikmaya
posté 12 Jan 2004, 12:39
Message #21


Macbidouilleur de vermeil !
****

Groupe : Membres
Messages : 1 226
Inscrit : 6 Oct 2003
Membre no 10 153



Merci pour tes précisions ploute smile.gif smile.gif

Par contre j'ai quelques soucis:

Déjà le script je peux l'éxécuter qu'en tapant sh Mycmp.sh et pas Mycmp.sh,c'est normal? unsure.gif
Et ensuite je pige pas bien l'histoire de dossier relatif,etc…,il faut pas qu'il y est de chemin d'accès,il faut qu'il soit dans le prompt?

Ce message a été modifié par fanatikmaya - 12 Jan 2004, 12:39.


--------------------
Image IPB
Go to the top of the page
 
+Quote Post
Bac's
posté 12 Jan 2004, 13:04
Message #22


Tendance cubiste
*****

Groupe : Membres
Messages : 1 595
Inscrit : 17 Sep 2003
Lieu : Là où ce qui tombe des arbres à l'automne commence par 'F' et finit par 'n'
Membre no 9 643



Fais un ch'ti :

chmod +x Mycmp.sh

et on en reparlera laugh.gif !


--------------------
G5 1,6GHz 1 270Mo RAM OS/X 10.4.1 + STHome Hyper-Bidouillé

C'est à force de rater que l'on finit par réussir. Devise Shadok.


[Editus moderatus]Plus de bannières merci... [Editus Bacsus]Oui chef, bien chef !
Go to the top of the page
 
+Quote Post
fanatikmaya
posté 12 Jan 2004, 17:02
Message #23


Macbidouilleur de vermeil !
****

Groupe : Membres
Messages : 1 226
Inscrit : 6 Oct 2003
Membre no 10 153



QUOTE (Bacs @ 12 Jan 2004, 14:04)
Fais un ch'ti :

chmod +x Mycmp.sh

et on en reparlera laugh.gif !

dry.gif
J'ai fait un chmod 777.,donc sauf si je me trompe,tout le monde a tout les droits sur ce fichier.

EDIT:
Ça marche également avec un ./Mycmp.sh dossier_cible

Ce message a été modifié par fanatikmaya - 12 Jan 2004, 17:28.


--------------------
Image IPB
Go to the top of the page
 
+Quote Post
ploute
posté 12 Jan 2004, 18:04
Message #24


Macbidouilleur de vermeil !
****

Groupe : Membres
Messages : 1 292
Inscrit : 25 Apr 2003
Membre no 7 294



Si ça marche avec "./" et que ça ne marche pas sans, c'est que le répertoire courant (".") n'est pas dans ton PATH, et ce n'est pas une mauvaise chose smile.gif

Le répertoire relatif... sais-tu que ".." désigne "le dossier parent" ? Donc ../.. désigne le grand-parent, etc. Bon, si pour "dossier_cible" tu spécifies un dossier de manière relative, c'est à dire par rapport au dossier courant, mon script ne devrait pas marcher. Il faut lui donner le chemin absolu, c'est à dire en partant de la racine : "/". C'est ce qui est fait si tu fais drag&drop du dossier à partir du finder dans la fenêtre Terminal (attention aux accents).

Mais euh, donc... ça marche pas ?
Go to the top of the page
 
+Quote Post
fanatikmaya
posté 12 Jan 2004, 18:09
Message #25


Macbidouilleur de vermeil !
****

Groupe : Membres
Messages : 1 226
Inscrit : 6 Oct 2003
Membre no 10 153



Euuuh…je t'explique:
-mon dossier se trouve dans chez moi(user sur DD OS X),et dedans se trouve de fichier rtf
-mon appli,Mycmp.sh et aussi ici

Donc je tape:


./Mycmp.sh dossier_cible

As tu essayé ton script?

EDIT:pour l'histore que ça marche que avec ./,je m'en doutais.
Il y a peut être une embrouille quelque part,en tout cas il me signale pas d'erreur.
Je vais jeter un coup d'oeil attentionné au script.

Ce message a été modifié par fanatikmaya - 12 Jan 2004, 18:17.


--------------------
Image IPB
Go to the top of the page
 
+Quote Post
ploute
posté 12 Jan 2004, 18:51
Message #26


Macbidouilleur de vermeil !
****

Groupe : Membres
Messages : 1 292
Inscrit : 25 Apr 2003
Membre no 7 294



Et tu mets quoi à la place de "dossier_cible" ? ... Euh... non... ne me dis pas que tu as écrit texto "dossier_cible" ?

Ahem bon. Reprenons.

dossier_cible c'est un nom fictif (techniquement on appelle ça un paramètre formel) : tu dois mettre TON dossier à la place de ce paramètre.

./Myscript.sh<ESPACE><DRAG&DROP_DU_DOSSIER><ENTREE>
Go to the top of the page
 
+Quote Post
fanatikmaya
posté 12 Jan 2004, 18:56
Message #27


Macbidouilleur de vermeil !
****

Groupe : Membres
Messages : 1 226
Inscrit : 6 Oct 2003
Membre no 10 153



dry.gif dry.gif dry.gif dry.gif
Euuuh…je suis pas c…à ce point là quand même rassure toi ploute. wink.gif
Donc tu as essayé ton script?

EDIT:
le dossier s'appelle try et puisqu'il est dans mon rep user pas de chemin d'acces(enfin puisqu'il se log sur le user par defaut…)
smile.gif

Il y aurait pas une erreur avec else à la fin? unsure.gif

Ce message a été modifié par fanatikmaya - 12 Jan 2004, 19:16.


--------------------
Image IPB
Go to the top of the page
 
+Quote Post
ploute
posté 12 Jan 2004, 20:00
Message #28


Macbidouilleur de vermeil !
****

Groupe : Membres
Messages : 1 292
Inscrit : 25 Apr 2003
Membre no 7 294



Oui je l'ai essayé, oui ça a marché. Bon ptêt que j'ai omis un détail qqpart, genre le classique problème de l'environnement de développement et de l'environnement de production biggrin.gif Je vais enquêter.

Mais donc, tu as mis quoi comme paramètre réel ? ça donne quoi la sortie du programme ? (juste le début si ça fait 40 lignes)

Je m'absente un moment, on verra ce soir.

EDIT : oui désolé pour avoir cru que... oui mais bon hein ça faisait 3 fois que tu disais "j'ai tapé blabla"... ça me semblait fort louche !

Ce message a été modifié par ploute - 12 Jan 2004, 20:02.
Go to the top of the page
 
+Quote Post
fanatikmaya
posté 12 Jan 2004, 20:05
Message #29


Macbidouilleur de vermeil !
****

Groupe : Membres
Messages : 1 226
Inscrit : 6 Oct 2003
Membre no 10 153



Ça marche chez toi???? blink.gif

Je crois que j'ai déjà trouvé une petite erreur:
ce n'est pas echo "$flag"
mais
echo "$truc"

Ensuite je vais encore regardé wink.gif


--------------------
Image IPB
Go to the top of the page
 
+Quote Post
ploute
posté 12 Jan 2004, 20:30
Message #30


Macbidouilleur de vermeil !
****

Groupe : Membres
Messages : 1 292
Inscrit : 25 Apr 2003
Membre no 7 294



(coucou de retour, ce fut rapide)
La commande echo dont tu parles est en commentaire... elle n'est donc pas exécutée. Quand bien même elle le serait, ce n'est qu'un affichage qui ne change strictement rien à ce que fait le script...

Donc tu ne veux pas me dire ce que tu as fait pour essayer ? dry.gif La commande exacte que tu as tapée... et la sortie affichée... Vraiment pas ? On tourne en rond depuis au moins 40 posts là ph34r.gif

EDIT : okay j'ai effectivement une erreur, c'était un coup de bol (ou plutôt au contraire) que ça aie marché dans mon test... ça m'aurait aidé si tu m'avais montré... bref. Je corrige.

A priori il manquait juste le "cd $1" en 2ème instruction... et une tite erreur sur le mv $lastfile "${lastfile}_A_EFFACER", mais pas bien grave celle-là. Bon du coup en plus ça devrait marcher en donnant le paramètre en relatif.
CODE
#!/bin/sh

liste=`/bin/ls -l $1 | awk '{print $5,$9}'|sort -n`

cd $1

#flag vaut 0 si 'truc' est la taille, 1 si 'truc' est le fichier
flag=0

taille=-1
lastsize=-1
lastfile="/dev/null"

for truc in $liste
do
#  echo $flag
 if [ $flag == 0 ]; then
   # On a la taille, on la memorise pour le prochain "truc" qui sera le fichier correspondant
   flag=1
   lastsize=$taille
   taille=$truc
 else
   flag=0
   if [ -f "$truc" ]; then
     lastfile=$fichier
     fichier=$truc
     echo "$fichier pese $taille"
     if [ "$taille" = "$lastsize" ]; then
        echo "Oh il est de la meme taille que $lastfile, comparons-les :"
        comparaison=`cmp $fichier $lastfile`
        if [ "$comparaison" = "" ]; then
          echo "Gagne... $fichier et $lastfile sont identiques."
          mv $lastfile "${lastfile}_A_EFFACER"
        else
          echo "Perdu, ok au suivant"
        fi
     fi
   else
     echo "$truc n'est pas un fichier"
   fi
 fi

done


Ce message a été modifié par ploute - 12 Jan 2004, 20:39.
Go to the top of the page
 
+Quote Post

4 Pages V   1 2 3 > » 
Reply to this topicStart new topic
1 utilisateur(s) sur ce sujet (1 invité(s) et 0 utilisateur(s) anonyme(s))
0 membre(s) :

 



Nous sommes le : 13th December 2018 - 05:57