IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Administration système Discussion :

[Bash] Problème avec locate dans un script


Sujet :

Administration système

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Août 2011
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2011
    Messages : 55
    Points : 49
    Points
    49
    Par défaut [Bash] Problème avec locate dans un script
    Bonjour à tous,

    Je ne sais pas si c'est vraiment le bon forum où poster ça, si je me suis trompé merci au modo qui déplacera ce topic.

    Voilà, ça fait très longtemps que j'ai pas touché à un script Bash, là j'en ai besoin et forcément ça coince.

    Voici la situation:
    J'ai beaucoup de fichiers en vrac dans un dossier qui n'a pas de sous-dossiers.
    Sur une partition, j'ai des fichiers qui portent les mêmes noms que ceux en vrac, mais une autre extension, et ceux là sont bien rangés.

    Le but est de recréer l'arborescence, à partir d'un certain dossier, des fichiers bien rangés, et d'y copier les fichiers en vrac

    Pour ça j'utilise le locate dans mon script, mais il ne retourne rien du tout !! Le voici :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    #!/bin/bash
    #MàJ pour le locate
    updatedb
     
    # Dossier où ya les fichiers en vrac
    DossierSource="/media/Musiques/test/"
    # Dossier où on va mettre les copies bien rangées
    DossierDestination="/media/Musiques/Musiques/"
    # Dossier qui contient les fichiers bien rangés
    DossierSrch="/media/Musiques/"
     
    # pour les espaces dans les noms des fichiers
    IFS=$'\'
     
    # parcours des fichiers en vrac
    Fichiers="$(ls ${DossierSource})"
     
    for File in ${Fichiers}; do
    	if [ "${File}" != "." ] && [ "${File}" != ".." ] ; then
    		# test
    		echo $File 
    #jusque là pas de soucis, chaque fichier est bien écrit
    		FilesFound="$(locate "${File}")"
    		# test
    		echo $FilesFound
    # là ya rien du tout qui s'affiche !!!!!! du coup la suite n'est pas exécutée
    		for FF in ${FilesFound}; do
    			BasePath="$(dirname ${FF})"
    			if [ $BasePath != "${DossierSource}" ] && [ $BasePath != "${DossierDestination}" ] ; then
    # pour la ligne du dessous c'est pas propre, je sais pas comment faire autrement pour
    # enlever du chemin trouvé le DossierSrch
    				NewBP=$BasePath | cut -c${#DossierSrch}-1000000
    				target="$DossierDestination$NewBP/"
    				source="$DossierSource/$File"
    				if [ ! -d 'dirname $target' ] ; then
    				    mkdir -m 755 -p $(dirname $target)
    				fi
    				cp -Rfp $source $target
    			fi
    		done
    	fi
    done
     
    exit 0

    Voilà bien évidemment je suis même pas sûr que la synthaxe est bonne.
    Ca fait des plombes que je suis sur ce petit script, et ça commence à bien me prendre la tête...

    Merci de me venir en aide !

  2. #2
    Invité
    Invité(e)
    Par défaut
    Salut,

    peux-tu simplement faire un locate d'un des fichiers en ligne de commande et voir si ça te retourne un résultat?

    Si ça ne va toujours pas, générer la db pour locate en tant que root à l'aide de la commande suivante et refaire le test :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    # updatedb && locate <un_des_fichiers>

  3. #3
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 585
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 585
    Points : 19 465
    Points
    19 465
    Par défaut
    Bonjour,

    Il y a des outils, comme ça, que je n'utilise pas dans un script : locate, par exemple.
    Et d'autres, dont je considère que l'usage doit être proscrit : ls.
    Par contre, find c'est bien, et précis; mais il ne faut pas mettre le résultat dans une variable (attention aux espaces, ou pire, dans les noms). C'est mieux de brancher la sortie (pipe |) sur une commande qui parsera le résultat.

Discussions similaires

  1. Problème d'incompatibilité dans un script avec read, IFS et rsync
    Par Jipété dans le forum Shell et commandes GNU
    Réponses: 3
    Dernier message: 27/04/2015, 19h06
  2. [Batch] Problème avec unzip dans script d'installation
    Par killgones dans le forum Scripts/Batch
    Réponses: 3
    Dernier message: 09/07/2014, 10h24
  3. [Bash] Problème avec paramètres dans variables
    Par bisol dans le forum Shell et commandes GNU
    Réponses: 5
    Dernier message: 09/03/2013, 17h39
  4. Impossible d'exécuter une commande avec su dans un script bash
    Par koshieDotFr dans le forum Shell et commandes GNU
    Réponses: 8
    Dernier message: 18/12/2012, 13h47
  5. Problème avec ProxyPass dans ou hors Location
    Par laurent 78 dans le forum Apache
    Réponses: 3
    Dernier message: 10/12/2012, 22h26

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo