BashFAQ/056 làm một công việc đàng hoàng giải thích lý do tại sao những gì bạn đã thử không hoạt động. Có một cái nhìn.
Vì bạn đang sử dụng bash (theo lỗi của bạn), lệnh for
là bạn của bạn.
for filename in *.php; do
echo "text" >> $filename
done
Nếu bạn muốn kéo "text" từ một tập tin, bạn thay vì có thể làm điều này:
for filename in *.php; do
cat /path/to/sourcefile >> $filename
done
Bây giờ ... bạn sức có các file trong thư mục con. Nếu vậy, bạn có thể sử dụng lệnh find
để tìm và xử lý chúng:
find . -name "*.php" -type f -exec sh -c "cat /path/to/sourcefile >> {}" \;
Lệnh find
xác định những tập tin sử dụng các điều kiện như -name
và -type
, sau đó lệnh -exec
chạy về cơ bản cùng một điều tôi đã giới thiệu trong các trước "cho" vòng lặp. Số \;
cuối cùng cho biết là find
rằng đây là kết thúc của đối số cho tùy chọn -exec
.
Bạn có thể man find
để biết thêm chi tiết về điều này.
Lệnh find
có thể di chuyển và thường được khuyến nghị cho loại hoạt động này đặc biệt nếu bạn muốn giải pháp của mình được di chuyển sang các hệ thống khác. Nhưng kể từ khi bạn đang sử dụng bash
, bạn cũng có thể xử lý các thư mục con sử dụng tùy chọn bash của globstar
:
shopt -s globstar
for filename in **/*.php; do
cat /path/to/sourcefile >> $filename
done
Bạn có thể man bash
và tìm kiếm cho "globstar" để biết thêm chi tiết về việc này.
LƯU Ý: Bạn có thể có các vấn đề khác với những gì bạn đang làm. Các tập lệnh PHP không cần để kết thúc bằng ?>
, vì vậy, bạn có thể thêm HTML mà tập lệnh sẽ cố gắng diễn giải dưới dạng mã PHP.
gì về các tập tin trong thư mục con? Tôi cũng cần phải phụ thêm vào nó. PS: Tôi đã sử dụng lệnh 'cho tôi bằng $ a làm echo" mã ">> $ i done' Nhưng trong tất cả các tệp, nó nối hai lần và không có gì xảy ra với các tệp trong thư mục con. –
Lệnh "tìm" tốt hơn cho các thư mục con. – Graham
Đối với các ví dụ bash quote '$ i' để xử lý các tập tin với không gian trong chúng cho –