voila, je dois toujours faire un script qui 'donne les fichiers en double du répertoire courant' en bash, pour apprendre, même si des utilitaires C existent
donc la j'ai pondu un "script" qui d'arès moi devrait marcher, d'apres les morceaux d'élements que j'ai réussi a chopper par ci par la, mais évidemment ça marche pas donc si vous pouviez m'aider...
(oui c pas élégant mais j'en suis au stade de l'apprentissage)
donc je liste les fichiers du répertoire, les trie par ordre de taille, et les teste 2 à 2 avec diff ( complexité linéaire)
#!/bin/bash
#cree une liste des fichiers triee par odre de taille
TOTO=`ls -l $1| grep -vE ^d | sort -nk 5 | awk '{print $8}'`
#donne le nombre d'elements ( de fichiers)
NB_FICHIERS=`echo $TOTO | wc -w`
#prend le premier element
PREC=`echo $TOTO|awk '{print $1}'`
#initialise la boucle
I=2
#on boucle tant qu'on a pas teste le dernier fichier
until test $I -ge $NB_FICHIERS
do
#on selectionne le i-ème fichier
FICHIER_COURANT=`echo $TOTO|awk '{print $'$I'}'`
#si les fichiers sont identiques ( diff ne retourne rien)
if test -z `diff $PREC $FICHIER_COURANT`
then
echo "les fichiers $PREC et $FICHIER_COURANT sont identiques"
fi
PREC=$FICHIER_COURANT
I=`expr $I + 1`
done |
j'ai corrigé 2-3 errerus de syntaxe et betes, mais j'ai une erreur ./dascript: line 16: test: -ge: unary operator expected que je ne comprend pas
Message édité par farib le 25-11-2003 à 10:30:32
---------------
Bitcoin, Magical Thinking, and Political Ideology