Tests pour création répertoires et sous répertoires script bash

Résolu/Fermé
pcsystemd Messages postés 691 Date d'inscription dimanche 27 novembre 2005 Statut Membre Dernière intervention 15 janvier 2024 - 3 oct. 2013 à 10:02
pcsystemd Messages postés 691 Date d'inscription dimanche 27 novembre 2005 Statut Membre Dernière intervention 15 janvier 2024 - 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


A voir également:

5 réponses

zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 407
3 oct. 2013 à 11:11
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

$

0
pcsystemd Messages postés 691 Date d'inscription dimanche 27 novembre 2005 Statut Membre Dernière intervention 15 janvier 2024 22
Modifié par pcsystemd le 3/10/2013 à 11:52
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.
0
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 407
3 oct. 2013 à 12:03
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 \;
0
pcsystemd Messages postés 691 Date d'inscription dimanche 27 novembre 2005 Statut Membre Dernière intervention 15 janvier 2024 22
3 oct. 2013 à 12:09
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 \;
0
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 407
3 oct. 2013 à 12:17
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
;-(
0
pcsystemd Messages postés 691 Date d'inscription dimanche 27 novembre 2005 Statut Membre Dernière intervention 15 janvier 2024 22
3 oct. 2013 à 12:43
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
0
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 407
3 oct. 2013 à 14:25
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...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
pcsystemd Messages postés 691 Date d'inscription dimanche 27 novembre 2005 Statut Membre Dernière intervention 15 janvier 2024 22
3 oct. 2013 à 15:12
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 ;-)
0