Câu trả lời:
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à echo
gắ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
ambiguous redirect
Nếu các tập tin không trống, bạn có thể sử dụng sed
mà không cần lặp. Để thêm cat
và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 foo
chú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 -i
tùy chọn sed -i 'a\cat' *.txt
:)
sed
là mứt của tôi;)
'i\cat'
sử dụng dấu gạch chéo ngược thay vì dấu gạch chéo?
'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
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")
sys
mô-đun để lặp lại các đối số dòng lệnhViệc sử dụng sẽ là ./add_cat.py *.txt
, sẽ hoạt động trên tất cả .txt
cá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" ở đó.
echo "cat" >> *.txt
gì?