Yanıtlar:
Basit bir iş yapacak:
for i in ./*.txt; do echo 'cat' >> "$i"; done;
Bu, geçerli dizindeki tüm txt dosyalarının bir listesini alır, onların içinden döngüler oluşturur ve echoonlara katılır (içeriğe eklenir). değiştirebileceğiniz >>için >kedi ile dosyaları içeriği üzerine yazmak.
Yapabileceğiniz başka bir şey, teebir akışı birden fazla dosyaya yönlendirmek için kullanmaktır .
Eklemek:
echo "cat" | tee -a *.txt
Üzerine yazmak için:
echo "cat" | tee *.txt
ambiguous redirect
Dosyalar boş değilse, seddöngü olmadan kullanabilirsiniz . Başlangıçta eklemek catiçin:
sed 'i\cat' *.txt
Sonuna eklemek için:
sed 'a\cat' *.txt
İkinci satırdan sonra eklemek için:
sed '2 a\cat' *.txt
İçindeki satırlardan önce eklemek fooiçin:
sed '/foo/ i\cat' *.txt
Yine de boş dosyalar üzerinde çalışmaz. Bir tür böcek.
(To aslında ihtiyacınız test ettikten sonra dosyalara yazma -iseçeneği: sed -i 'a\cat' *.txt)
sedbenim reçelim ;)
'i\cat'eğik çizgi yerine ters eğik çizgiyi kullanıyor?
'icat'ya da koyabilirsiniz i cat. Ters eğik çizgi inanıyorum geleneksel.
Python yaklaşımı:
#!/usr/bin/env python
import sys
for i in sys.argv[1:]:
with open(i,'w') as fd:
fd.write("cat\n")
syskomut satırı bağımsız değişkenlerini yinelemek için modül kullanırGeçerli çalışma dizinindeki ./add_cat.py *.txttüm .txtdosyalar üzerinde çalışacak şekilde kullanım olacaktır . Bunun iyileştirilmesi, "cat" sabit kodlaması yerine yazmak için komut satırı argümanı # 1'i dize olarak kullanmayı içerebilir.
echo "cat" >> *.txtnedir?