Menu

Tests pour création répertoires et sous répertoires script bash [Résolu/Fermé]

Messages postés
558
Date d'inscription
dimanche 27 novembre 2005
Statut
Membre
Dernière intervention
19 juin 2019
- - Dernière réponse : pcsystemd
Messages postés
558
Date d'inscription
dimanche 27 novembre 2005
Statut
Membre
Dernière intervention
19 juin 2019
- 3 oct. 2013 à 15:12
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 :

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


Afficher la suite 

5 réponses

Messages postés
36622
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
19 juillet 2019
3706
0
Merci
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

$

Messages postés
558
Date d'inscription
dimanche 27 novembre 2005
Statut
Membre
Dernière intervention
19 juin 2019
16
0
Merci
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.
zipe31
Messages postés
36622
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
19 juillet 2019
3706 -
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 \;
Messages postés
558
Date d'inscription
dimanche 27 novembre 2005
Statut
Membre
Dernière intervention
19 juin 2019
16
0
Merci
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 \;
zipe31
Messages postés
36622
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
19 juillet 2019
3706 -
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 le
chmod 777
et le
chown blablabla
;-(
Messages postés
558
Date d'inscription
dimanche 27 novembre 2005
Statut
Membre
Dernière intervention
19 juin 2019
16
0
Merci
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
zipe31
Messages postés
36622
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
19 juillet 2019
3706 -
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 un
elif...then
à ton
if...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épertoire
test
directement puisqu'avec l'option
-p
rien n'est fait s'il existe...
Messages postés
558
Date d'inscription
dimanche 27 novembre 2005
Statut
Membre
Dernière intervention
19 juin 2019
16
0
Merci
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 ;-)