Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#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,

anistos #1 a écrit :

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

Hors 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 :

Le 29/01/2020, krodelabestiole a écrit :

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...

fin du § 2, dawar a écrit :

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 tongue
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 smile 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 hmm

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,

anistos a écrit :

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