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

Signaler
Messages postés
571
Date d'inscription
dimanche 27 novembre 2005
Statut
Membre
Dernière intervention
5 août 2020
-
Messages postés
571
Date d'inscription
dimanche 27 novembre 2005
Statut
Membre
Dernière intervention
5 août 2020
-
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


5 réponses

Messages postés
35342
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
9 août 2020
5 326
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
571
Date d'inscription
dimanche 27 novembre 2005
Statut
Membre
Dernière intervention
5 août 2020
16
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.
Messages postés
35342
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
9 août 2020
5 326
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
571
Date d'inscription
dimanche 27 novembre 2005
Statut
Membre
Dernière intervention
5 août 2020
16
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 \;
Messages postés
35342
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
9 août 2020
5 326
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
571
Date d'inscription
dimanche 27 novembre 2005
Statut
Membre
Dernière intervention
5 août 2020
16
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
Messages postés
35342
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
9 août 2020
5 326
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
571
Date d'inscription
dimanche 27 novembre 2005
Statut
Membre
Dernière intervention
5 août 2020
16
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 ;-)