[Bash]Pb avec locate dans un script
Kopros
Messages postés
595
Date d'inscription
Statut
Membre
Dernière intervention
-
zipe31 Messages postés 36402 Date d'inscription Statut Contributeur Dernière intervention -
zipe31 Messages postés 36402 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour à tous,
Ca 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 :
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 !
Ca 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 :
#!/bin/bash #MàJ pour le locate updatedb # Dossier où ya les fichiers en vrac DossierSource="/home/nicolas/Bureau/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 !
A voir également:
- [Bash]Pb avec locate dans un script
- Script vidéo youtube - Guide
- Mas script - Accueil - Windows
- Ghost script - Télécharger - Polices de caractères
- Bingo bash - Télécharger - Divers Jeux
- Bash addition ✓ - Forum Shell
1 réponse
Salut,
FilesFound="$(locate "${File}")"
# test
echo $FilesFound
# là ya rien du tout qui s'affiche !!!!!! du coup la suite n'est pas exécutée
Est-ce que tu obtiens quelque chose depuis un terminal avec la commande :
La commande "locate" élude certains répertoires, as-tu vérifié que le tien n'en faisait pas partie ?
FilesFound="$(locate "${File}")"
# test
echo $FilesFound
# là ya rien du tout qui s'affiche !!!!!! du coup la suite n'est pas exécutée
Est-ce que tu obtiens quelque chose depuis un terminal avec la commande :
locate nom_d_un_fichier_présent_dans_/home/nicolas/Bureau/test/
La commande "locate" élude certains répertoires, as-tu vérifié que le tien n'en faisait pas partie ?
Sinon :
# pour la ligne du dessous c'est pas propre, je sais pas comment faire autrement pour
# enlever du chemin trouvé le DossierSrch
Peut-être tout simplement en l'excluant dès ta recherche :
(modulo les quotes qui sont peut-être mauvais, cf ma remarque ci-dessus)
Pas de soucis ;-))
;-))