Pages : 1
#1 Le 06/05/2020, à 09:52
- Gooners88
Copie de fichier recursive
Bonjour,
je galère sur le développement d'un script.
J'ai besoin de copier des fichiers présent dans plusieurs sous dossier. Je m'explique.
└── dossier
├── dossier1
│ ├── file.pdf
│ └── .ok
├── dossier2
│ ├── file.pdf
└── dossier3
├── file.pdf
└── .ok
Je doit faire un script qui passe dans chacun des dossier "dossier1 2 3"
Qui vérifie si le fichier .ok est présent, si oui il copie le fichier pdf sur un montage smb, sinon il passe au dossier suivant.
Avez vous des piste pour m'aider ?
Merci ....
Gooners.
Hors ligne
#2 Le 06/05/2020, à 10:13
- marcus68
Re : Copie de fichier recursive
bonjour,
un truc comme ça ?
cd dossier
for i in */.ok
do
cp "${i/.ok}"*.pdf /pointdemontagesmb
done
Dernière modification par marcus68 (Le 06/05/2020, à 10:14)
Hors ligne
#3 Le 06/05/2020, à 10:25
- Gooners88
Re : Copie de fichier recursive
Parfait, as tu une variante pour copier le fichier dans lequel ce trouve le .ok ?
Merci de ton aide, je ne gere pas bien encore bash ...
Hors ligne
#4 Le 06/05/2020, à 10:36
- marcus68
Re : Copie de fichier recursive
j'ai pas testé, mais c'est ce que c'est supposé faire.
bash cherche les fichiers .ok dans les sous-dossiers avec
for i in */.ok
si il trouve, il copie les fichiers pdf présent dans les sous-dossiers dans le dossier /pointdemontagesmb (sans garder le dossier1, dossier2, ...)
cp "${i/.ok}"*.pdf /pointdemontagesmb
Exemple :
imaginons bash voit dossier1/.ok
${i/.ok} sera interprété en dossier1/
il fera donc:
cp dossier1/*.pdf /pointdemontagesmb
qui copiera le fichier pdf présent dans le dossier qui contient .ok
EDIT : il faut par contre qu'au moins un sous-dossier contiennent un fichier .ok, sinon ça risque de bugger, bash n’interprétera pas */.ok et cp copiera tous les fichiers pdf des sous-dossiers.
Dernière modification par marcus68 (Le 06/05/2020, à 10:41)
Hors ligne
#5 Le 06/05/2020, à 10:40
- erresse
Re : Copie de fichier recursive
Bonjour Gooners88,
Ta question est bizarre car, d'après ta description de l'arborescence, ".ok" est un fichier caché éventuellement vide, ce n'est pas une donnée contenue DANS un fichier...
Peux-tu préciser ce que tu entends par "copier le fichier dans lequel ce trouve le .ok" ?
Plus de 50 ans d'informatique, ça en fait des lignes de commandes en console, mais on n'avait pas le choix...
Excellente raison pour, aujourd'hui qu'on le peut, utiliser au maximum les INTERFACES GRAPHIQUES !
Important : Une fois le problème solutionné, pensez à clore votre sujet en ajoutant [Résolu] devant le titre du 1er message, et un bref récapitulatif de la solution à la fin de celui-ci. Merci.
Hors ligne
#6 Le 06/05/2020, à 10:52
- Gooners88
Re : Copie de fichier recursive
j'ai mal tourné ma phrase pardon si ce n'etait pas claire.
En gros je veux que quand bash trouve un fichier .ok par exemple :
└── dossier
├── dossier1
│ ├── file.pdf
│ └── .ok
Il copie le dossier1 sur le montage smb.
Hors ligne
#7 Le 06/05/2020, à 10:57
- marcus68
Re : Copie de fichier recursive
Oui, si tu remplaces cp par quelque chose comme :
cp -r "${i///.ok}" /pointdemontagesmb
Ça copie le dossier, le pdf et le fichier .ok
Hors ligne