Menulis kata ke setiap file txt dalam folder

10

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

Qubix
sumber

Jawaban:

20

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
Ravexina
sumber
apa con untuk digunakan echo "cat" >> *.txt?
hytromo
4
@hakermania yang seharusnya gagal denganambiguous redirect
Zanna
13

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)

Zanna
sumber
Saya benci sed :)), menyebabkan ada banyak hal yang dapat Anda lakukan dengannya dan saya tidak menyadarinya :))
Ravexina
@Ravexina sedadalah selai saya;)
Zanna
mengapa 'i\cat'menggunakan garis miring terbalik bukan garis miring?
phuclv
@ LưuVĩnhPhúc backslash adalah opsional sebenarnya, Anda juga dapat meletakkan 'icat'atau i cat. Backslash adalah konvensional saya percaya. Anda tidak dapat menggunakan forwardslash - itu akan dimasukkan secara harfiah
Zanna
4

Pendekatan python:

#!/usr/bin/env python
import sys

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

Penggunaannya 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.

Sergiy Kolodyazhnyy
sumber