Viết một từ vào mỗi tệp txt trong một thư mục


10

Làm cách nào tôi có thể viết từ "cat" vào mọi tệp .txt trong một thư mục?

Câu trả lời:


20

Một đơn giản cho sẽ làm công việc:

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

Điều này sẽ nhận được một danh sách tất cả các tệp txt trong thư mục hiện tại, các vòng lặp trong đó và echogắn vào chúng (nối vào nội dung). bạn có thể thay đổi >>thành >, ghi đè lên nội dung tệp bằng cat.

Một điều khác bạn có thể làm là sử dụng teeđể chuyển hướng một luồng đến nhiều tệp.

Để thêm:

echo "cat" | tee -a *.txt

Để ghi đè:

echo "cat" | tee *.txt

sử dụng con lừa là echo "cat" >> *.txtgì?
hytromo

4
@hakermania nên thất bại vớiambiguous redirect
Zanna

13

Nếu các tập tin không trống, bạn có thể sử dụng sedmà không cần lặp. Để thêm catvào lúc bắt đầu:

sed 'i\cat' *.txt

Để thêm vào cuối:

sed 'a\cat' *.txt

Để thêm sau dòng thứ hai:

sed '2 a\cat' *.txt

Để thêm trước dòng với foochúng:

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

Nó không hoạt động trên các tập tin trống mặc dù. Một loại lỗi.

(Để thực sự ghi vào các tệp sau khi kiểm tra, bạn cần -itùy chọn sed -i 'a\cat' *.txt:)


Tôi ghét sed :)), vì có rất nhiều điều bạn có thể làm với nó và tôi không biết về chúng :))
Ravexina

@Ravexina sedlà mứt của tôi;)
Zanna

Tại sao 'i\cat'sử dụng dấu gạch chéo ngược thay vì dấu gạch chéo?
phuclv

@ LưuViênPhúc dấu gạch chéo ngược là tùy chọn thực sự, bạn cũng có thể đặt 'icat'hoặc i cat. Dấu gạch chéo ngược là thông thường tôi tin. Bạn không thể sử dụng forwardslash - nó sẽ được chèn theo nghĩa đen
Zanna

4

Cách tiếp cận Python:

#!/usr/bin/env python
import sys

for i in sys.argv[1:]:
    with open(i,'w') as fd:
        fd.write("cat\n")
  • nó sử dụng sysmô-đun để lặp lại các đối số dòng lệnh
  • mỗi đối số dòng lệnh sẽ được mở dưới dạng tệp để viết
  • "mèo" với dòng mới sẽ được ghi vào hồ sơ trước khi đi tới

Việc sử dụng sẽ là ./add_cat.py *.txt, sẽ hoạt động trên tất cả .txtcác tệp trong thư mục làm việc hiện tại. Cải thiện điều này có thể bao gồm sử dụng đối số dòng lệnh số 1 dưới dạng chuỗi để viết thay vì mã hóa "con mèo" ở đó.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.