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 echo
masukkan ke dalamnya (tambahkan ke konten). Anda dapat mengubah >>
ke >
, untuk menimpa konten file dengan cat.
Hal lain yang dapat Anda lakukan adalah menggunakan tee
untuk 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 sed
tanpa mengulang. Untuk menambahkan cat
di 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 foo
di dalamnya:
sed '/foo/ i\cat' *.txt
Itu tidak berfungsi pada file kosong. Jenis bug.
(Untuk benar-benar menulis ke file setelah pengujian Anda memerlukan -i
pilihan: sed -i 'a\cat' *.txt
)
sed
adalah 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")
sys
modul untuk beralih pada argumen baris perintahPenggunaannya akan sama ./add_cat.py *.txt
, yang akan beroperasi pada semua .txt
file 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
?