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 19/08/2013, à 16:01

Maverickfan

Editer en même temps & sauver un grand nombre de fichiers txt

Bonjour,

Je vous pose la question, car je suis sûr que c'est possible, mais je n'ai pas l'habitude d'éditer plusieurs fichiers texte avec le terminal.

J'ai 2500 fichiers texte, avec des noms différents. Ces fichiers texte sont vides. Je voudrais pouvoir y écrire en même temps quelque chose.

Les fichiers s'appellent : texte1.txt, texte2.txt, fichier1.txt, fichier2.txt...

Je voudrais y écrire " bonjour". Je peux éditer les fichiers avec vi, mais je voudrais qu'il m'écrive "bonjour" dans tous les fichiers en même temps, et qu'il me sauve les modifications. Ou du moins, qu'il les modifie tout seul les uns après les autres sans que j'intervienne.

Connaîtriez-vous la commande ou la manip la plus adéquate? Ou un autre outil? Un script?

Un immense merci par avance!

Dernière modification par Maverickfan (Le 19/08/2013, à 17:41)

Hors ligne

#2 Le 19/08/2013, à 16:25

Watael

Re : Editer en même temps & sauver un grand nombre de fichiers txt

salut,

avec bash et xargs

$ touch {text,fichier}{1,2}.txt
$ ls -1 *.txt
fichier1.txt
fichier2.txt
text1.txt
text2.txt
$ printf '%s\n' *.txt | xargs -I{} bash -c 'echo "Bonjour" > "$1"' _ {}
$ cat *.txt
Bonjour
Bonjour
Bonjour
Bonjour

Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#3 Le 19/08/2013, à 16:57

Maverickfan

Re : Editer en même temps & sauver un grand nombre de fichiers txt

Ahahahah,

Un immense merci, en effet Watael! Non seulement ça marche du tonnerre, mais je ne l'aurais pas trouvé tout seul!

Le : printf '%s\n' *.txt | xargs -I{} bash -c 'echo "Bonjour" > "$1"' _ {} , m'a épargné 2500 éditions manuelles! C'est exactement ce qu'il me fallait! D'autant qu'après ces 2500 fichiers, j'en ai encore 2500 autres au moins...

Donc merci encore, et très bonne journée:-)!

Hors ligne

#4 Le 19/08/2013, à 17:40

Maverickfan

Re : Editer en même temps & sauver un grand nombre de fichiers txt

Je reviens car j'ai également une petite question qui suit cette solution.

Maintenant, pour mon autre série, je dois sauter des lignes:-( En gros, je voudrais écrire cela dans mes fichiers texte :

Bonjour :


Au revoir :

Or, je ne connais pas la syntaxe pour effectuer un ou plusieurs sauts de ligne, et la, quand j'utilise la commande, cela m'écrit tout sur une ligne : Bonjour : Au revoir :

J'ai fait plusieurs essais mais cela n'a rien donné.

Un grand merci par avance si tu peux m'éclairer!

Hors ligne

#5 Le 20/08/2013, à 16:28

Compte supprimé

Re : Editer en même temps & sauver un grand nombre de fichiers txt

Bonjour,

C'est un peu de la bricole...

#! /bin/bash

cheminDossier="/home/$USER/Bureau" # chemin du dossier au se trouve les fichiers...


cd "$cheminDossier"
fichier=$(ls $cheminDossier | grep ".txt")

for i in $fichier
do
echo | awk '{printf "Bonjour :\n\nAu revoir :"}' > $i
done

ou comme ça...

#! /bin/bash

cheminDossier=$(zenity --file-selection --directory)
cd "$cheminDossier"
fichier=$(ls $cheminDossier | grep ".txt")

for i in $fichier
do
echo | awk '{printf "Bonjour :\n\nAu revoir :"}' > $i
done

Un saut de ligne est fait par un \n

Dernière modification par Compte supprimé (Le 28/03/2015, à 00:47)

#6 Le 20/08/2013, à 19:53

Watael

Re : Editer en même temps & sauver un grand nombre de fichiers txt

pareil, avec printf au lieu de echo

printf '%s\n' *.txt | xargs -I{} bash -c 'printf '%s\n\n%s\n' "Bonjour :" "Au revoir :" > "$1"' _ {}

Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#7 Le 20/08/2013, à 22:00

pingouinux

Re : Editer en même temps & sauver un grand nombre de fichiers txt

Bonsoir,
Une autre possibilité est de transformer les fichiers *.txt en liens (symboliques ou durs) :

# Créer le fichier qui contiendra le texte (comme le fait Watael en #6)
printf '%s\n\n%s\n' "Bonjour :" "Au revoir :" >mon_fichier_texte

# Transformer les fichiers *.txt en liens symboliques
for fic in *.txt; do ln -sf mon_fichier_texte "$fic"; done

# ou bien
# Transformer les fichiers *.txt en liens durs
for fic in *.txt; do ln -f mon_fichier_texte "$fic"; done

Ensuite, la modification de n'importe lequel de ces fichiers modifiera tous les autres.

Hors ligne

#8 Le 08/09/2013, à 15:30

Maverickfan

Re : Editer en même temps & sauver un grand nombre de fichiers txt

Bonjour,

Juste un petit passage ( avec du retard ) pour vous remercier pour vos solutions, qui ont fonctionné et qui m'ont permis d'économiser beaucoup de temps dans mon travail!

Je n'ai pas utilisé la dernière solution de pingouinux, car après une modification globale sur tous ces fichiers, chacun d'entre eux subira un certain nombre de modifications personnalisées. Mais le principe est tout autant valable:-)!

Hors ligne