bonjour,
je voudrai savoir s'il est possible de créer un script qui parcours un répertoire pour pouvoir effectuer des tests sur les fichiers de ce répertoire.
merci de votre
Version imprimable
bonjour,
je voudrai savoir s'il est possible de créer un script qui parcours un répertoire pour pouvoir effectuer des tests sur les fichiers de ce répertoire.
merci de votre
Avec find en spécifiant le type de fichier que tu veux manipuler et avec --exec et une commande, tu devrais pouvoir y arriver sans trop te fatiguer.
Code:man find
avec le find j'arrive effectivement à stocker tous les fichiers dans une variable, je peux certainement travailler dessus aprés. mais existe il pas une sorte de fonction permettant de lire les fichiers d'un repertoire grace à un tableau ou autre? (un peu comme dans d'autre langages)
comprend pas ta demande làCitation:
Envoyé par dams78
tu veux faire quoi tres exactement ?
si il s'agit de faire une action sur les fichiers re-voir-man-page
exemple qui vire les fichiers trop vieuxCode:find ....................... -exec action {} \;
Code:find . -mtime +365 -exec rm {} \;
sinon précise ta demande...et c'est quoi cette histroire de lire un repertoire comme un tableau ?
tu veux faire un tableau de variables ?
si oui alors
et ainsi tu remplis un tableau nomé table avec les fichiers de plus de 365jours.Code:
1
2
3
4
5
6 test:$ cpt=0 && for i in `find . -mtime +365` do $table[cpt]=`echo $i` cpt=`"echo $cpt + 1" | bc` done test:$
tu pouras alors les appeler par $table[n°du fichier] par la suite.
sinon tu peux utiliser le find comme une liste (avec une boucle for) ou rediriger le resultat dans un fichier que tu peux ensuite lire ou en extraire que certains etc.... par exemple pour extraire que certains fichiers il te reste alors à faire comme ça
pour traiter que les fichier qui commance par a.b avec un chiffre (sauf 0) entre les deux....Code:for i in `grep -i a[1-9]b* liste` ; do actionsurfichiers ; done
si rien de tout ça ne correspond à ta demande alors reformule et de façon tres tres tres claire.
alors ce que je veux faire c'est effectivement créer un tableau contenant tous les fichiers d'un repertoire donné, si j'utilise le code que tu m'as donné
j'ai ces messages d'erreurs:Code:
1
2
3
4
5
6
7
8 rep=/home/damien/archives/script/essai/ cpt=0 && for i in `find $rep` do $table[cpt]=`echo $i` cpt=`"echo $cpt + 1" | bc` done
./diff.sh: line 7: [cpt]=/home/damien/archives/script/essai/: Aucun fichier ou répertoire de ce type
./diff.sh: line 8: echo 0 + 1: command not found
./diff.sh: line 8: bc: command not found
./diff.sh: line 7: [cpt]=/home/damien/archives/script/essai/bidon.txt: Aucun fichier ou répertoire de ce type
./diff.sh: line 8: echo + 1: command not found
./diff.sh: line 8: bc: command not found
je suis (vous l'avez deviné) trés débutant dans les scripts shell
c'est une boulette c'est pas $variable=..... mais variable=.....
doncmarchera mieuxCode:
1
2
3
4
5 linux:~ # cpt=0 linux:~ # for i in `find $rep -type f`; do table[$cpt]=`echo $i` > cpt=`expr $cpt + 1`; done linux:~ # echo ${table[424]} ./gfx/sprites/player_attack_5_1f.bmp
;)
impécable ca marche
merci beaucoup!!!!
bonsoir,
je réouvre ce post parceque j'ai remarqué que lorsque les fichiers possèdes des espaces le find les considère comme des retours chariot
par exemple le fichier toto tata.tar
va donner avec ce code :
le résultat suivantCode:
1
2
3
4
5
6
7 cpt=0 for i in `find $repertoire -type f` do echo $i files[$cpt]=`echo $i` cpt=$(($cpt+1)) done
$>toto
tata.tar
alors que moi je voudrai qu'une ligne représente un fichier
merci de votre aide