Précédent   Forum des professionnels en informatique > Systèmes > Linux
Linux Forum d'entraide sur le système Linux. Avant de poster -> Tutoriels Linux, F.A.Q Linux
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 30/05/2011, 15h28   #1
 
Omar TALBI
Inscription : février 2011
Messages : 25
Détails du profil
Informations personnelles :
Nom : Omar TALBI

Informations forums :
Inscription : février 2011
Messages : 25
Points : -1
Points : -1
Par défaut erreur programme shell

bonsoir, j'ai tapé un programme shell dont le but est de détécter la duplication d'un fichier, mais ça cloche lorsque j'exécute
voici mon programme :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#! /bin/sh
echo "entrez le repertoire"
read rep
find $rep -type f >fic1
wc -l ./fic1 >fic2
n=`cut -d" " -f1 fic2`
rm fic2
for i in `seq $n` 
  do 
     chemin=`sed -n ''$i'p' fic1` 
     name=`basename $chemin `
     for j in `$i ... $n`
          do 
          chemin1=`sed -n ''$j'p' fic1`
          name1=`basename`$chemin1`
          if ("$name" = "$name1") 
            then  echo "2 fichiers identiques"
          fi
          done
  done
ou aussi celui là :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#! /bin/sh
echo "entrez le repertoire"
read rep
find $rep -type f >fic1
wc -l ./fic1 >fic2
n=`cut -d" " -f1 fic2`
rm fic2
for i in `seq $n`
do 
chemin=`sed -n ''$i'p' fic1` 
name=`basename $chemin `
for j in `$i ... $n`
do 
if (sed -n ''$j'p' fic1 | grep $name )
then echo "2 fichiers identiques" 
else echo " rien"
fi 
done 
done
si vous pouvez me montrer où est l'erreur je serais très remerciant
Akhilleus est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 30/05/2011, 15h49   #2
Membre Expert
 
Avatar de becket
 
Frédéric Brugmans
Informaticien multitâche
Inscription : février 2005
Messages : 661
Détails du profil
Informations personnelles :
Nom : Frédéric Brugmans

Informations professionnelles :
Activité : Informaticien multitâche

Informations forums :
Inscription : février 2005
Messages : 661
Points : 1 196
Points : 1 196
C'est beaucoup plus simple que cela :

Code :
1
2
 
find ./ -type f  -exec basename {} \;  | sort |uniq -d
becket est déconnecté   Envoyer un message privé Réponse avec citation 20
Vieux 30/05/2011, 16h10   #3
 
Omar TALBI
Inscription : février 2011
Messages : 25
Détails du profil
Informations personnelles :
Nom : Omar TALBI

Informations forums :
Inscription : février 2011
Messages : 25
Points : -1
Points : -1
Merci beaucoup, ça m'a beaucoup aidé
Akhilleus est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 30/05/2011, 16h29   #4
Expert Confirmé Sénior
 
Avatar de N_BaH
 
Inscription : février 2008
Messages : 2 070
Détails du profil
Informations forums :
Inscription : février 2008
Messages : 2 070
Points : 4 153
Points : 4 153
Bonjour,

pourquoi basename ?

find "$rep/" -type f -printf '%f\n' | [...]
N_BaH est déconnecté   Envoyer un message privé Réponse avec citation 30
Vieux 30/05/2011, 16h32   #5
Membre Expert
 
Avatar de becket
 
Frédéric Brugmans
Informaticien multitâche
Inscription : février 2005
Messages : 661
Détails du profil
Informations personnelles :
Nom : Frédéric Brugmans

Informations professionnelles :
Activité : Informaticien multitâche

Informations forums :
Inscription : février 2005
Messages : 661
Points : 1 196
Points : 1 196
Citation:
Envoyé par N_BaH Voir le message
Bonjour,

pourquoi basename ?

find "$rep/" -type f -printf '%f\n' | [...]
Par habitude
becket est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 30/05/2011, 19h27   #6
Expert Confirmé
 
Inscription : janvier 2011
Messages : 970
Détails du profil
Informations personnelles :
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : janvier 2011
Messages : 970
Points : 2 871
Points : 2 871
Salut,

Citation:
Envoyé par N_BaH Voir le message
Bonjour,
pourquoi basename ?
find "$rep/" -type f -printf '%f\n' | [...]
Extrait de Bash Hackers Wiki :

Code :
%f 	Interpret and print the associated argument as floating point number
Quelqu'un aurait l'amabilité de m'expliquer le comment du pourquoi de la chose* ???

Merchi


* La chose étant bien entendu la transformation d'un point décimal en barre oblique
__________________
$ man woman
Il n'y a pas de page de manuel pour woman.
zipe31 est déconnecté   Envoyer un message privé Réponse avec citation 11
Vieux 31/05/2011, 00h11   #7
Expert Confirmé Sénior
 
Avatar de N_BaH
 
Inscription : février 2008
Messages : 2 070
Détails du profil
Informations forums :
Inscription : février 2008
Messages : 2 070
Points : 4 153
Points : 4 153
Bonjour,

Il ne s'agit, ici, ni de la commande printf interne de bash, ni de /usr/bin/printf, mais d'une option action propre à find
N_BaH est déconnecté   Envoyer un message privé Réponse avec citation 20
Vieux 31/05/2011, 08h19   #8
Expert Confirmé
 
Inscription : janvier 2011
Messages : 970
Détails du profil
Informations personnelles :
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : janvier 2011
Messages : 970
Points : 2 871
Points : 2 871
Citation:
Envoyé par N_BaH Voir le message
Bonjour,

Il ne s'agit, ici, ni de la commande printf interne de bash, ni de /usr/bin/printf, mais d'une option action propre à find
Mais quelle buse je fais moi

En tout cas merci beaucoup
__________________
$ man woman
Il n'y a pas de page de manuel pour woman.
zipe31 est déconnecté   Envoyer un message privé Réponse avec citation 10
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 17h23.


 
 
 
 
Partenaires

Hébergement Web