Pertanyaan Menulis kata ke setiap file txt di folder


Bagaimana saya bisa menulis kata "kucing" ke dalam setiap file .txt dalam folder?


10
2018-04-11 13:57


asal




Jawaban:


Sederhana untuk melakukan pekerjaan:

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

Ini akan mendapatkan daftar semua file txt di direktori saat ini, loop di antara mereka dan echo kucing ke dalamnya (tambahkan ke konten). kamu bisa berubah >> untuk >, untuk menimpa isi file dengan kucing.

Hal lain yang bisa Anda lakukan adalah menggunakan tee untuk mengalihkan aliran ke beberapa file.

Untuk menambahkan:

echo "cat" | tee -a *.txt

Untuk menimpa:

echo "cat" | tee *.txt

20
2018-04-11 13:59



apa gunanya digunakan echo "cat" >> *.txt? - hytromo
@hakermania yang seharusnya gagal ambiguous redirect - Zanna


Jika file tidak kosong bisa Anda gunakan sed tanpa perulangan. Menambahkan cat di awal:

sed 'i\cat' *.txt

Untuk menambahkan di bagian akhir:

sed 'a\cat' *.txt

Untuk menambahkan setelah baris kedua:

sed '2 a\cat' *.txt

Untuk menambahkan sebelum garis dengan foo di dalamnya:

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

Itu tidak berfungsi pada file kosong sekalipun. Jenis bug.

(Untuk benar-benar menulis ke file setelah pengujian Anda membutuhkan -i pilihan: sed -i 'a\cat' *.txt)


13
2018-04-11 14:15



Saya benci sed :)), karena ada banyak hal yang dapat Anda lakukan dengannya dan saya tidak menyadarinya :)) - Ravexina
@Ravexina sed adalah selai saya;) - Zanna
Kenapa 'i\cat' gunakan backslash bukannya slash? - phuclv
@ LưuVĩnhPhúc backslash adalah opsional sebenarnya, Anda juga dapat menempatkan 'icat' atau i cat. Backslash itu konvensional saya percaya. Anda tidak dapat menggunakan forwardlash - itu akan benar-benar dimasukkan - Zanna


Pendekatan Python:

#!/usr/bin/env python
import sys

for i in sys.argv[1:]:
    with open(i,'w') as fd:
        fd.write("cat\n")
  • menggunakansys modul untuk beralih ke argumen baris perintah
  • setiap argumen baris perintah akan terbuka sebagai file untuk ditulis
  • "kucing" dengan baris baru akan ditulis ke file sebelum pergi ke berikutnya

Penggunaan akan menjadi seperti ./add_cat.py *.txt , yang akan beroperasi pada semua .txt file dalam direktori kerja saat ini. Peningkatan ini bisa termasuk menggunakan argumen baris perintah # 1 sebagai string untuk menulis alih-alih "kucing" hardcoding di sana.


4
2018-04-11 17:48