Réponses:
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 echo
cat dedans (ajoute au contenu). vous pouvez passer >>
à >
, pour écraser le contenu des fichiers avec cat.
Vous pouvez également utiliser tee
pour rediriger un flux vers plusieurs fichiers.
À ajouter:
echo "cat" | tee -a *.txt
Pour remplacer:
echo "cat" | tee *.txt
ambiguous redirect
Si les fichiers ne sont pas vides, vous pouvez les utiliser sed
sans boucle. Pour ajouter cat
au 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 foo
en 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' -i
option: sed -i 'a\cat' *.txt
)
sed
est ma confiture;)
'i\cat'
utilise la barre oblique inverse au lieu de la barre oblique?
'icat'
ou i cat
. Le backslash est conventionnel je crois. Vous ne pouvez pas utiliser forwardslash - il sera littéralement inséré
Approche Python:
#!/usr/bin/env python
import sys
for i in sys.argv[1:]:
with open(i,'w') as fd:
fd.write("cat\n")
sys
module pour parcourir les arguments de la ligne de commandeL'utilisation serait as ./add_cat.py *.txt
, qui fonctionnerait sur tous les .txt
fichiers 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".
echo "cat" >> *.txt
?