Tests pour création répertoires et sous répertoires script bash
Résolu
pcsystemd
Messages postés
734
Statut
Membre
-
pcsystemd Messages postés 734 Statut Membre -
pcsystemd Messages postés 734 Statut Membre -
Bonjour,
je souhaite créer pour chaque références présentes dans un fichier txt un répertoire puis dans ce répertoire, je créais un sous répertoire "test" puis je donne a ces répertoires les bons droits. Pour cela je procède de la façon suivante dans mon script .
Contenu du fichier references.txt :
256
6489
325
3678
Contenu de mon script :
Le résultat :
256/test
6489/test
325/test
3678/test
etc..
Cela fonctionne très bien pour les nouvelles références, mais je souhaite également vérifier dans les dossiers déjà existants qu'il y a bien un sous repertoire "test" dans chaque et si ce n'est pas le cas le créer.
Comment puis je m'y prendre?
Merci
--
L'accès au savoir est la première liberté que chaque homme devrait avoir.
je souhaite créer pour chaque références présentes dans un fichier txt un répertoire puis dans ce répertoire, je créais un sous répertoire "test" puis je donne a ces répertoires les bons droits. Pour cela je procède de la façon suivante dans mon script .
Contenu du fichier references.txt :
256
6489
325
3678
Contenu de mon script :
for i in $(cat references.txt)
do
if [ ! -d "${i}" ]
then
mkdir -p ${i}/test
chown toto.titi ${i};chmod 775 ${i}
chown toto.titi ${i}/test;chmod 777 ${i}/test
else
echo "Error creation dossier ${i}" | mail -s "Error creation dossier ${i}"
fi
done
Le résultat :
256/test
6489/test
325/test
3678/test
etc..
Cela fonctionne très bien pour les nouvelles références, mais je souhaite également vérifier dans les dossiers déjà existants qu'il y a bien un sous repertoire "test" dans chaque et si ce n'est pas le cas le créer.
Comment puis je m'y prendre?
Merci
--
L'accès au savoir est la première liberté que chaque homme devrait avoir.
5 réponses
-
Salut,
$ tree
.
|-- rep1
|-- rep2
| ·-- test
|-- rep3
| ·-- toto
|-- rep4
| ·-- tutu
| ·-- titi
·-- rep5
·-- test
10 directories, 0 files
$ find . -maxdepth 1 -mindepth 1 -type d -exec mkdir -p {}/test \;
$ tree
.
|-- rep1
| ·-- test
|-- rep2
| ·-- test
|-- rep3
| |-- test
| ·-- toto
|-- rep4
| |-- test
| ·-- tutu
| ·-- titi
·-- rep5
·-- test
13 directories, 0 files
$
-
Salut,
et merci en premier lieu.Je vais tester mais deux questions sur ta ligne de commande :
il n'est pas prévu dans la commande de modifier les droits de chaque répertoire crée comment dans mon script hors il le faudrait.
Il faut que je créais le sous répertoire test uniquement dans les répertoires présents dans mon fichier réferences.txt donc la ligne ne devrait elle pas être plutôt de la sorte :
find ${i} -maxdepth 1 -mindepth 1 -type d -exec mkdir -p {}/test \;
;-)
L'accès au savoir est la première liberté que chaque homme devrait avoir.-
mais je penses que dans la ligne de commande que tu m'indiques il n'est pas prévu de modifier les droits de chaque répertoire crée
Exact, mais je ne faisais que répondre à ta demande :
mais je souhaite également vérifier dans les dossiers déjà existants qu'il y a bien un sous repertoire "test" dans chaque et si ce n'est pas le cas le créer.
;-))
Sinon, essaie ceci :
find . -maxdepth 1 -mindepth 1 -type d -exec mkdir -p -m 777 {}/test \; -exec chown toto.titi ${}/test \;
-
-
Cool merci, je teste.
et pour ma seconde question :
- Il faut que je créais le sous répertoire test uniquement dans les répertoires présents dans mon fichier réferences.txt donc la ligne ne devrait elle pas être plutôt de la sorte :
find ${i} -maxdepth 1 -mindepth 1 -type d -exec mkdir -p {}/test \;
find ${i} -maxdepth 1 -mindepth 1 -type d -exec chown toto.titi ${}/test \;
-
Euh... ta question c'était :
Cela fonctionne très bien pour les nouvelles références, mais je souhaite également vérifier dans les dossiers déjà existants qu'il y a bien un sous repertoire "test" dans chaque et si ce n'est pas le cas le créer.
et c'est à celle là que j'ai répondu... en y incluant lechmod 777
et lechown blablabla
;-(
-
-
Désolé zipe31 mais il est vraie que c'est un peu compliqué d'exprimer et surtout de faire comprendre ce que l'on souhaite faire par écrit.
Je vais essayer de m'expliquer par étapes :
Etape 1 :
Créer un répertoire par référence ainsi que son sous répertoire "test" s'ils n'existent pas déjà et cela pour les références présentes dans mon fichier références.txt puis ajouter les bons droits.
C'est ce que fait actuellement mon script.
Etape 2 :
Pour certaines références plus anciennes présentes dans mon fichier, il est possible que le répertoire existe déjà mais pas le sous répertoire "test", il me faut donc que je vérifie et que je créait ce sous répertoire "test" si nécessaire puis que je donne les bons droits.
C'est cette étape qui me pose problème.
Merci
-
Pour certaines références plus anciennes présentes dans mon fichier, il est possible que le répertoire existe déjà mais pas le sous répertoire "test"
Ben il suffit de rajouter unelif...then
à tonif...then...else
et de créer le sous-répertoire.
Puis en y réfléchissant bien, inutile de vérifier si le répertoire de référence existe, autant créer le répertoiretest
directement puisqu'avec l'option-p
rien n'est fait s'il existe...
-
-
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
Oupss, effectivement c'est encore plus simple. Pffff quelques fois je me comprends pas car je vais chercher un truc complexe alors que la solution est simple.
Merci en tout cas ça fonctionne ;-)