Jawaban:
Sederhana untuk akan melakukan pekerjaan:
for i in ./*.txt; do echo 'cat' >> "$i"; done;
Ini akan mendapatkan daftar semua file txt di direktori saat ini, loop di seluruh file dan echomasukkan ke dalamnya (tambahkan ke konten). Anda dapat mengubah >>ke >, untuk menimpa konten file dengan cat.
Hal lain yang dapat Anda lakukan adalah menggunakan teeuntuk mengalihkan aliran ke beberapa file.
Untuk menambahkan:
echo "cat" | tee -a *.txt
Untuk menimpa:
echo "cat" | tee *.txt
ambiguous redirect
Jika file tidak kosong, Anda dapat menggunakan sedtanpa mengulang. Untuk menambahkan catdi awal:
sed 'i\cat' *.txt
Untuk menambahkan di akhir:
sed 'a\cat' *.txt
Untuk menambah setelah baris kedua:
sed '2 a\cat' *.txt
Untuk menambahkan sebelum baris dengan foodi dalamnya:
sed '/foo/ i\cat' *.txt
Itu tidak berfungsi pada file kosong. Jenis bug.
(Untuk benar-benar menulis ke file setelah pengujian Anda memerlukan -ipilihan: sed -i 'a\cat' *.txt)
sedadalah selai saya;)
'i\cat'menggunakan garis miring terbalik bukan garis miring?
'icat'atau i cat. Backslash adalah konvensional saya percaya. Anda tidak dapat menggunakan forwardslash - itu akan dimasukkan secara harfiah
Pendekatan python:
#!/usr/bin/env python
import sys
for i in sys.argv[1:]:
with open(i,'w') as fd:
fd.write("cat\n")
sysmodul untuk beralih pada argumen baris perintahPenggunaannya akan sama ./add_cat.py *.txt, yang akan beroperasi pada semua .txtfile di direktori kerja saat ini. Perbaikan ini bisa termasuk menggunakan argumen baris perintah # 1 sebagai string untuk menulis alih-alih "kucing" hardcoding di sana.
echo "cat" >> *.txt?