#1 Le 11/03/2022, à 18:18
- anistos
creation de fichiers en boucle
bonjour
j'ai encore une question svp
monfichieraecrire.txt
monfichiertexte.txt
je cherche des fichiers qui ont le même nom par exemple fichierdefou nanofichier scriptfichier
jusque la ca va !
je voudrai dans mon script que en fonction du nombre de fichier (ici 3) il me fasse
3 fois la copie d'un texte dans un autre fichier
et que dans le texte qui contient "fichier" il me change fichier par fichierdefou la 1ere fois, nanofichier pour la seconde et pour la troisieme scriptfichier etc etc etc
me donne le nombre de fois que je veux le faire:
ls -l | find "/chemin" -iname "*$titre1*.txt" | wc -l
mon texte blabla blabla fichier blablablabla
je voudrai que mon texte soit toujours le même sauf fichier que se transforme en fichierdefou nanofichier scriptfichier
je sais pas si j'ai ete bien clair je suis crevé
merci !!!!
Dernière modification par anistos (Le 20/03/2022, à 13:04)
Hors ligne
#2 Le 12/03/2022, à 10:20
- pingouinux
Re : creation de fichiers en boucle
Bonjour,
je sais pas si j'ai ete bien clair...
Pas pour moi, en tout cas…
Le mieux serait que tu donnes un petit exemple.
Hors ligne
#3 Le 12/03/2022, à 10:23
- Watael
Re : creation de fichiers en boucle
est-ce que l'énoncé de l'exercice ne serait, lui, pas plus clair ?
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#4 Le 12/03/2022, à 10:28
- cqfd93
Re : creation de fichiers en boucle
Modération
Bonjour,
Quel rapport entre le titre de ce fil et le problème incompréhensible posé ?
− cqfd93 −
En ligne
#5 Le 12/03/2022, à 10:33
- xubu1957
Re : creation de fichiers en boucle
Bonjour,
Une suite de sed erreur de commande ?
==============
@anistos
Il faudrait modifier le titre de ta discussion :
modération : merci d'éviter les titres type "aidez-moi", "question" ou autre "demande urgente". Choisissez un titre qui évoque spécifiquement votre problème, ça vous aidera à titiller les utilisateurs intéressés, et donc à trouver l'aide dont vous avez besoin.
_ _ _
Dans > Savoir poser les questions pour obtenir rapidement une réponse...
Mettez le maximum d'informations dans le titre, c'est ce qui est vu en premier, et décide le lecteur d'ouvrir ou non votre message. Un titre "AIDEZ MOI! La vidéo ne marche pas sur mon portable!" sera bien moins percutant pour nous que "Ecran décalé sur mon portable avec carte vidéo Fooware MV 1005"
Dernière modification par xubu1957 (Le 12/03/2022, à 11:25)
Conseils pour les nouveaux demandeurs et pas qu'eux
Important : Pensez à passer vos sujets en [Réso|u] lorsque ceux-ci le sont, au début du titre en cliquant sur Modifier sous le premier message, et un bref récapitulatif de la solution à la fin de celui-ci. Merci. Membre de Linux-Azur
Hors ligne
#6 Le 12/03/2022, à 17:55
- anistos
Re : creation de fichiers en boucle
ok excusez moi
j'ai un texte dans le fichier texte.txt
"je reconnais la grandeur du fichier a l'extremité d'un abyss"
je cherche des fichiers dans mon dossier *fichier*.*
ls -l | find "/chemin" -iname "*fichier*.*"
/chemin/nanofichier.txt
/chemin/fichiergrand.txt
/chemin/sifichierpetit.txt
nb=le nombre de ligne du resultat
(ici j'en ai 3 mais je voudrais que cela face aussi pour 2 3 4 5 etc)
ensuite je voudrai que mon texte soit inscrit en fonction de ces fichiers
( j'ai fais un sed et awk pour n'aficher que le nom du fichier sans le chemin ni .txt)
je voudrais qu'il me sorte dans un autre fichieraecrire.txt :
je reconnais la grandeur du nanofichier a l'extremité d'un abyss
je reconnais la grandeur du fichiergrand a l'extremité d'un abyss
je reconnais la grandeur du sifichierpetit a l'extremité d'un abyss
donc en fonction que si il y en a 3 il m'en fait 3
si 2 fait 2
si 15 fait 15
je pensai a une boucle if mais ca m'a l'air long
if [ $nb = 2 ]
then
if [ $nb = 3 ]
then
if
alors si il y en a 21 j'ai de quoi ecrire
j'espere avoir ete plus clair
merci
Hors ligne
#7 Le 12/03/2022, à 18:44
- Tawal
Re : creation de fichiers en boucle
Hello,
Déjà ta commande de départ n'est pas bonne le ls ..| find ... est une aberration !
Fais plutôt comme ceci :
find /chemin -type f -iname "*fichier*.*
Ensuite plusieurs solution, soit exploiter le résultat au travers une boucle while read ...
Ou utiliser la commande -exec de find.
Avec la boucle while :
find /chemin -type f -iname "*fichier*.* -print0 | while read -rd""
do
replace="${REPLY##*/}"
replace="${replace%.*}"
sed -e "s/fichier/$replace/g" fichier_texte >> fichier_à_écrire
done
Edit:
Ajout de guillemets manquants
Edit2:
Correction de l' entrée de sed.
Dernière modification par Tawal (Le 12/03/2022, à 19:24)
Le savoir n'a d’intérêt que si on le transmet.
Useless Use of Cat Award
Filenames and Pathnames in Shell: How to do it Correctly
À chaque problème sa solution, à chaque solution son moyen, si pas de moyen, toujours le problème !
Hors ligne
#8 Le 12/03/2022, à 19:22
- anistos
Re : creation de fichiers en boucle
bonjour tawal (et les autres aussi)
dsl pour les fautes de programations
je ne suis pas aussi doué que ca
cela va etre compliqué
car il me repond quand je lance le scrip :
sed: can't read /chemin/fichier 0: No such file or directory
sed: can't read txt/chemin/fichier 3: No such file or directory
c'est un peu trop pour moi
Hors ligne
#9 Le 12/03/2022, à 19:27
- Tawal
Re : creation de fichiers en boucle
Je viens de le corriger, il y avait une erreur.
Il faut renseigner les chemins absolus des fichiers visés.
Edit:
Il faut aussi mettre le shebang en 1 ère ligne :
#!/bin/bash
Edit2:
Une autre erreur s'est glissée
Voici le script correct :
#!/bin/bash
find /chemin -type f -iname "*fichier*.* -print0 | while read -rd ""
do
replace="${REPLY##*/}"
replace="${replace%.*}"
sed -e "s/fichier/$replace/g" fichier_texte >> fichier_à_écrire
done
Dernière modification par Tawal (Le 12/03/2022, à 19:43)
Le savoir n'a d’intérêt que si on le transmet.
Useless Use of Cat Award
Filenames and Pathnames in Shell: How to do it Correctly
À chaque problème sa solution, à chaque solution son moyen, si pas de moyen, toujours le problème !
Hors ligne
#10 Le 13/03/2022, à 01:28
- Watael
Re : creation de fichiers en boucle
le script ne va pas trouver fichier_texte.
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#11 Le 13/03/2022, à 01:58
- Tawal
Re : creation de fichiers en boucle
Oui, j'aurais du écrire "/chemin/absolu/fichier_texte".
Sinon, SI il va trouver le fichier (même en chemin relatif). J'ai testé.
Le savoir n'a d’intérêt que si on le transmet.
Useless Use of Cat Award
Filenames and Pathnames in Shell: How to do it Correctly
À chaque problème sa solution, à chaque solution son moyen, si pas de moyen, toujours le problème !
Hors ligne
#12 Le 13/03/2022, à 03:44
- Watael
Re : creation de fichiers en boucle
il ne le trouvera quand même pas, ou ce ne sera pas le bon :
si j'ai bien compris, il est question de traiter les fichiers trouvés (pas un arbitraire fichier fichier_texte), dont les noms sont assignés séquentiellement(?) à $REPLY.
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#13 Le 13/03/2022, à 12:06
- anistos
Re : creation de fichiers en boucle
bonjour tlm
merci
pour moi c'est ça que je voulais impeccable
et oui il faut le chemin complet
j'ai une autre question pour les doués du script (merci impeccable)
comment je peux utiliser cette boucle pour créer des fichiers toujours sur mes fichiers
je voulais récupérer un fichier.txt dans lequel ce trouve mes noms de fichiers
a base faire un
cat /chemin/nomdefichier.txt | awk 'BEGIN { FS = "." } ; {print $1}' >> /chemin/quelesnoms.txt
fichier 1
nanofichier
fichiergrand
sifichierpetit
fichier de commande 5
alors je vais encore me faire engueler d’aberration mais dsl
cat /chemin/quelesnoms.txt | while read -rd ""
do
replace="${REPLY##*/}"
replace="${replace%.*}"
touch $chemin/$chemin1/$replace.bin
done
et j'aurai voulu dans mon dossier
fichier 1.bin
nanofichier.bin
fichiergrand.bin
sifichierpetit.bin
fichier de commande 5.bin
mais ca ne marche pas
ne me grondez pas svp
cordialement
Hors ligne
#14 Le 13/03/2022, à 12:19
- Watael
Re : creation de fichiers en boucle
:plonk:
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#15 Le 13/03/2022, à 12:23
- anistos
Re : creation de fichiers en boucle
oui dsl watael
Modération : merci de respecter la langue du forum qui est le français, pas le SMS.
Dernière modification par cqfd93 (Le 13/03/2022, à 12:55)
Hors ligne
#16 Le 13/03/2022, à 13:02
- anistos
Re : creation de fichiers en boucle
oui désolé watael
Hors ligne
#17 Le 13/03/2022, à 13:38
- Tawal
Re : creation de fichiers en boucle
Il va falloir être plus clair dans les explications et dans l'énoncé !
Car là, je ne comprends plus rien !
Le savoir n'a d’intérêt que si on le transmet.
Useless Use of Cat Award
Filenames and Pathnames in Shell: How to do it Correctly
À chaque problème sa solution, à chaque solution son moyen, si pas de moyen, toujours le problème !
Hors ligne
#18 Le 13/03/2022, à 15:12
- anistos
Re : creation de fichiers en boucle
ok désolé je passe des heures la dessus
j'ai une liste dans un fichier
fichier 1
nanofichier
etc
les espaces sont important
je voudrais creer ces fichiers avec un script
le probleme c'est qu'avec les espaces il ne me créé pas les fichiers désiré
il ne me met pas non plus l'extension du fichier et j'obtient
fichier
1
nanofichier
.txt
ce que je voudrais c'est
fichier 1.txt
nanofichier.txt
etc
dans mon dossier
Hors ligne
#19 Le 13/03/2022, à 15:28
- anistos
Re : creation de fichiers en boucle
pfiou j'ai trouvé !!
while read line
do
touch "chemin/$line.txt"
done < /chemin/quelesnoms.txt
fichier 1.txt
nanofichier.txt
ect
merci encore
Hors ligne
#20 Le 13/03/2022, à 15:38
- Watael
Re : creation de fichiers en boucle
touch est un programme externe destiné à modifier les dates d'un fichier. Par défaut, si le fichier n'existe pas, touch le crée, mais ce n'es pas son but premier.
une simple redirection "vide" crée un fichier, s'il n'existe pas, et l'écrase s'il existe.
NB : créer des fichiers vides avant d'y écrire ne sert à rien.
Dernière modification par Watael (Le 13/03/2022, à 15:39)
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#21 Le 20/03/2022, à 11:58
- anistos
Re : creation de fichiers en boucle
merci pour vos reponses
je ne suis pas clair du tout
dans un dossier j'ai des fichiers blabla.pdf
avec des espaces dans les noms
je voudrai référencer tout les fichiers.pdf de ce dossier
et creer un fichiers du meme nom .txt et .html
si j'ai
1.pdf
1 jour.pdf
c'est l'heure.pdf
je voudrais creer les fichiers :
1.txt
1.htm
1 jour.txt
1 jour.htm
c'est l'heure.pdf
c'est l'heure.txt
c'est l'heure.htm
bien sur c'est pour les remplir apres
le txt c'est pour répertorier les meta donnés du fichier en question
et le htm c'est une page web qui va afficher le fichier pdf, le telechargement, et les donné sur le fichier
cordialement
Hors ligne
#22 Le 20/03/2022, à 12:41
- xubu1957
Re : creation de fichiers en boucle
Bonjour,
je ne suis pas clair du tout
Sans compter que l'on attend toujours, que tu changes le titre de ta discussion (relire message #5, du 12/03/2022).
Conseils pour les nouveaux demandeurs et pas qu'eux
Important : Pensez à passer vos sujets en [Réso|u] lorsque ceux-ci le sont, au début du titre en cliquant sur Modifier sous le premier message, et un bref récapitulatif de la solution à la fin de celui-ci. Merci. Membre de Linux-Azur
Hors ligne
#23 Le 20/03/2022, à 12:49
- anistos
Re : creation de fichiers en boucle
bonjour xubu1957
comment je fais pour changer le titre
pour
creation de fichiers en boucle ?
Hors ligne
#24 Le 20/03/2022, à 12:55
- xubu1957
Re : creation de fichiers en boucle
Pour éditer le titre de ta discussion, il faut utiliser le bouton Modifier au bas de ton premier message.
Conseils pour les nouveaux demandeurs et pas qu'eux
Important : Pensez à passer vos sujets en [Réso|u] lorsque ceux-ci le sont, au début du titre en cliquant sur Modifier sous le premier message, et un bref récapitulatif de la solution à la fin de celui-ci. Merci. Membre de Linux-Azur
Hors ligne
#25 Le 20/03/2022, à 13:05
- anistos
Re : creation de fichiers en boucle
merci xubu 1957
Hors ligne