Écrire un mot dans chaque fichier txt d'un dossier


10

Comment puis-je écrire le mot "chat" dans chaque fichier .txt d'un dossier?

Réponses:


20

Un simple pour fera le travail:

for i in ./*.txt; do echo 'cat' >> "$i"; done;

Cela obtiendra une liste de tous les fichiers txt dans le répertoire en cours, les boucle à travers eux et les echocat dedans (ajoute au contenu). vous pouvez passer >>à >, pour écraser le contenu des fichiers avec cat.

Vous pouvez également utiliser teepour rediriger un flux vers plusieurs fichiers.

À ajouter:

echo "cat" | tee -a *.txt

Pour remplacer:

echo "cat" | tee *.txt

quel est le con à utiliser echo "cat" >> *.txt?
hytromo

4
@hakermania qui devrait échouer avecambiguous redirect
Zanna

13

Si les fichiers ne sont pas vides, vous pouvez les utiliser sedsans boucle. Pour ajouter catau début:

sed 'i\cat' *.txt

Pour ajouter à la fin:

sed 'a\cat' *.txt

Pour ajouter après la deuxième ligne:

sed '2 a\cat' *.txt

Pour ajouter des lignes avant avec fooen elles:

sed '/foo/ i\cat' *.txt

Cependant, cela ne fonctionne pas sur les fichiers vides. Une sorte de bug.

(Pour écrire réellement les fichiers après avoir testé vous avez besoin de l' -ioption: sed -i 'a\cat' *.txt)


Je déteste sed :)), car il y a beaucoup de choses que vous pouvez faire avec et je ne suis pas au courant :))
Ravexina

@Ravexina sedest ma confiture;)
Zanna

pourquoi 'i\cat'utilise la barre oblique inverse au lieu de la barre oblique?
phuclv

@ LưuVĩnhPhúc la barre oblique inverse est facultative en fait, vous pouvez également mettre 'icat'ou i cat. Le backslash est conventionnel je crois. Vous ne pouvez pas utiliser forwardslash - il sera littéralement inséré
Zanna

4

Approche Python:

#!/usr/bin/env python
import sys

for i in sys.argv[1:]:
    with open(i,'w') as fd:
        fd.write("cat\n")
  • il utilise le sysmodule pour parcourir les arguments de la ligne de commande
  • chaque argument de ligne de commande sera ouvert en tant que fichier d'écriture
  • "cat" avec newline sera écrit dans un fichier avant de passer à la prochaine

L'utilisation serait as ./add_cat.py *.txt, qui fonctionnerait sur tous les .txtfichiers du répertoire de travail actuel. L'amélioration pourrait inclure l'utilisation de l'argument de ligne de commande # 1 comme chaîne pour écrire au lieu de coder en dur "cat".

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.