Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1839 connectés 

  FORUM HardWare.fr
  Linux et OS Alternatifs
  Codes et scripts

  Un petit peu d'aide avec un petit script bash

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Un petit peu d'aide avec un petit script bash

n°391839
_Faust_
Burn-out général
Posté le 18-01-2004 à 17:06:14  profilanswer
 

j'arrive pas à voir ce qui marche pas la dedans...  
 
Le but est de prendre tout les fichiers dans le sous répertoire et les mettre dans le répertoire parent...  
 
QQ'un peut m'enligner un peu?  
 

Code :
  1. #!/bin/bash
  2. echo Quel dossier voulez vous nettoyer?
  3. read folder
  4. for folder in `find -type d`; do
  5. for fichier in $folder/*; do
  6. if [ -f $fichier ]; then
  7. mv $fichier $folder
  8. else echo blabla
  9. fi
  10. done
  11. done

mood
Publicité
Posté le 18-01-2004 à 17:06:14  profilanswer
 

n°391846
o'gure
Modérateur
Multi grognon de B_L
Posté le 18-01-2004 à 17:19:11  profilanswer
 


mv folder/* folder/../  :??:  :??:

n°391954
_Faust_
Burn-out général
Posté le 18-01-2004 à 20:35:37  profilanswer
 

euh....

n°391955
arsunik
ma tuxitude me beastifie
Posté le 18-01-2004 à 20:39:14  profilanswer
 

Euh... tu essaies de faire quoi avec ce script ?

n°391957
mikala
Souviens toi du 5 Novembre...
Posté le 18-01-2004 à 20:40:51  profilanswer
 

ArSuniK a écrit :

Euh... tu essaies de faire quoi avec ce script ?
 


Citation :

Le but est de prendre tout les fichiers dans le sous répertoire et les mettre dans le répertoire parent...  



---------------
Intermittent du GNU
n°391960
o'gure
Modérateur
Multi grognon de B_L
Posté le 18-01-2004 à 20:43:37  profilanswer
 

Si tu veux que les fichier de TOUS les sous reps soient mis dans le rep parent
find folder -type f -exec mv {} folder/../ \;
 
Je pense que ce qui ne marche pas dans ton script c est la premiere boucle for. Mais soit plus precise sur ce que tu veux faire avec ton script

n°391962
_Faust_
Burn-out général
Posté le 18-01-2004 à 20:48:41  profilanswer
 

j'ai essayer avec ca mv folder/* folder/../ mais ca ne donne pas l'effet escompter...
 
le script doit avoir un nombre variable de paramètres qui sont pour les répertoires existants dans le répertoire courant. Pour chacun des répertoires nommés, le script doit déplacer tous ses fichiers au répertoire courant. Si les noms des fichiers sont identiques, le script doit concatener les fichiers sous un même nom dans le répertoire courant. Quand les répertoires nommés sont vides, ils doivent être détruits..
 
Il doit pas en manquer beaucoup à ce que j'ai fait, mais remarquer je débute alors j'ai un peu de mal à voir...

n°391967
mikala
Souviens toi du 5 Novembre...
Posté le 18-01-2004 à 20:54:53  profilanswer
 

cd $folder
cd ..
mv $folder/* .


---------------
Intermittent du GNU
n°391970
_Faust_
Burn-out général
Posté le 18-01-2004 à 20:58:34  profilanswer
 

mikala a écrit :

cd $folder
cd ..
mv $folder/* .
 


 
Je crois que ca bousiller ma machine  :heink:

n°391974
_Faust_
Burn-out général
Posté le 18-01-2004 à 21:01:53  profilanswer
 

effectivement...je dois réinstaller linux....

mood
Publicité
Posté le 18-01-2004 à 21:01:53  profilanswer
 

n°391976
o'gure
Modérateur
Multi grognon de B_L
Posté le 18-01-2004 à 21:03:15  profilanswer
 


 :heink:

n°391977
mikala
Souviens toi du 5 Novembre...
Posté le 18-01-2004 à 21:03:45  profilanswer
 

_Faust_ a écrit :


 
Je crois que ca bousiller ma machine  :heink:  


 :??:  

1:01 mikala@andrea ~% cd test
21:01 mikala@andrea ~/test% mkdir test
21:01 mikala@andrea ~/test% cd test
21:01 mikala@andrea ~/test/test% touch toto
21:01 mikala@andrea ~/test/test% touch titi
21:01 mikala@andrea ~/test/test% cd ..
21:01 mikala@andrea ~/test% vi script
21:02 mikala@andrea ~/test% cat script
#!/bin/sh
echo Quel dossier voulez vous nettoyer?
read folder
cd $folder
cd ..
mv $folder/* .
 
21:02 mikala@andrea ~/test% ls -al test
total 0
drwxr-xr-x  2 mikala mikala 96 jan 18 21:01 ./
drwxr-xr-x  3 mikala mikala 96 jan 18 21:02 ../
-rw-r--r--  1 mikala mikala  0 jan 18 21:01 titi
-rw-r--r--  1 mikala mikala  0 jan 18 21:01 toto
21:02 mikala@andrea ~/test% sh script
Quel dossier voulez vous nettoyer?
test
21:02 mikala@andrea ~/test% ls
script  test/  titi  toto
21:02 mikala@andrea ~/test% ls -al test
total 0
drwxr-xr-x  2 mikala mikala  48 jan 18 21:02 ./
drwxr-xr-x  3 mikala mikala 144 jan 18 21:02 ../
21:02 mikala@andrea ~/test%


Message édité par mikala le 18-01-2004 à 21:04:19

---------------
Intermittent du GNU
n°391979
_Faust_
Burn-out général
Posté le 18-01-2004 à 21:07:28  profilanswer
 

je sais pas, j'ai tapé ces commandes cd $folder  
cd ..  
mv $folder/*  
 
mais pas dans un script...faut croire qu'il a pas aimé ca...
 
mais c'est pas grave, c'est un environnement de test, et ca roule même sur VMware...
 

n°391980
mikala
Souviens toi du 5 Novembre...
Posté le 18-01-2004 à 21:08:03  profilanswer
 

bon tu nous expliques comment tu as cassé ta distribution la ?
tu n'étais pas en root pour faire ton script quand meme ?


---------------
Intermittent du GNU
n°391982
o'gure
Modérateur
Multi grognon de B_L
Posté le 18-01-2004 à 21:09:28  profilanswer
 

_Faust_ a écrit :

je sais pas, j'ai tapé ces commandes cd $folder  
cd ..  
mv $folder/*  


 
et yavait koi dans ta variable $folder ???

n°391984
_Faust_
Burn-out général
Posté le 18-01-2004 à 21:14:32  profilanswer
 

j'était en root, dans /root/test
ls
1 2 3 4 5 6 7 patate patate1 1.sh 2.sh 3.sh test.sh
 
j'ai tapé cd $folder  
cd ..  
mv $folder/*  
 
et voilà....
 
bon, je suis entrain de réinstaller là et je vais vérifier le tout...

n°391985
mikala
Souviens toi du 5 Novembre...
Posté le 18-01-2004 à 21:16:00  profilanswer
 

tu comprends donc la necessité de ne _pas_ etre en root _sauf_ strict necessaire.


---------------
Intermittent du GNU
n°391989
_Faust_
Burn-out général
Posté le 18-01-2004 à 21:29:11  profilanswer
 

ouai, effectivement, c'est bien la première chose qu'on apprend...
 
mais....dans le script ca aurait pas fait la même chose?

n°391990
_Faust_
Burn-out général
Posté le 18-01-2004 à 21:32:07  profilanswer
 

hahahaha....le con....comme vous devez rire...
 
entk, moi je suis plié en 2...
 
aller, on lâche pas....
 
Bon, s'il y a des bons samaritains qui aide les universitaires en première session, on lève la main!!

n°391992
mikala
Souviens toi du 5 Novembre...
Posté le 18-01-2004 à 21:39:49  profilanswer
 

_Faust_ a écrit :

ouai, effectivement, c'est bien la première chose qu'on apprend...
 
mais....dans le script ca aurait pas fait la même chose?  


justement non cela n'aurait pas fait la meme chose.
cela n'aurait fait que ce que tu as demandé .
a savoir allez au repertoire indiqué , remonter d'un repertoire déplace les fichier du premier repertoire dans le repertoire actuel .
la tu la executer dans un shell on ne sais meme pas qu'elle était la valeur de la variable $folder ...


---------------
Intermittent du GNU
n°392009
_Faust_
Burn-out général
Posté le 18-01-2004 à 22:04:45  profilanswer
 

dès que je fini mon installation, je réessai ca....
 
il me manquerai quoi par la suite, une comparaison et si la valeur est vraie, je fait un cat ?
 
genre ,euh... if fichier_dans_sous_rep = fichier_dans_rep
                 then cat fichier_dans_sous_rep >> fichier_dans_rep

n°393378
aigles
Posté le 21-01-2004 à 13:24:01  profilanswer
 

Voici un script qui fait le nettoyage que tu veux faire.
On lui spécifie un répertoire racine à nettoyer.
Tous les fichiers des sous-répertoires sont remontés à la racine. Sin un fichier de même nom existe déjà, les deux fichiers sont concatanés.
Les sous-répertoire ainsi vidés sont détruits.
 

Code :
  1. #
  2. # Récupération dossier à nettoyer
  3. #
  4. folder=$1
  5. while [ -z "$folder" ]
  6. do
  7.    read -p "Dossier à nettoyer ? " folder
  8. done
  9. #
  10. # On se positionne dans le dossier à nettoyer
  11. #
  12. if [ -d "$folder" ]
  13. then
  14.    cd "$folder"
  15. else 
  16.    echo "Erreur - Dossier inexistant."
  17.    exit 1
  18. fi
  19. #
  20. # Tous fichiers des sous-répertoires du dossier
  21. # racine à nettoyer sont remontés à la racine et
  22. # les sous-répertoires sont détruits.
  23. #
  24. find * -type d -prune | \
  25. while read subdir
  26. do
  27.    #
  28.    # Les fichiers du sous-répertoires sont déplacés
  29.    # à la racine
  30.    #
  31.    find $subdir -type f | \
  32.    while read file
  33.    do
  34.       name=${file##*/}
  35.       if [ -f ./$name ]
  36.       then
  37.          # Le fichier existe déjà à la racine
  38.          # on concatene les deux
  39.          cat $file >> ./$name
  40.          rm  $file
  41.       else
  42.          # Le fichier est déplacé à la racine
  43.          mv  $file .
  44.      fi
  45.    done
  46.    #
  47.    # Le sous-répertoire est maintenant vide,
  48.    # on peut le supprimer
  49.    #
  50.    rm -rf $subdir
  51. done

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Linux et OS Alternatifs
  Codes et scripts

  Un petit peu d'aide avec un petit script bash

 

Sujets relatifs
script perl pour irssibesoin d'aide pour ajouter une carte SCSI + hdd
besoin d'aide pour installer mulinuxscript de reconnection
autofs, besoin d'aide | une partie de resolue[ Logiciels / Script ] Outils pour le MP3 / OGG et script pour LAME
[Gentoo] Besoin du script xdm [résolu]Besoin d'aide Debian 3.0r2
extraire une chaine de caractere à l'aide de awk ou autre chose ...Desativer le Bip sous BASH
Plus de sujets relatifs à : Un petit peu d'aide avec un petit script bash


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR