07. tháng 3 2025
Vì dự án mới của tôi được sao chép từ mã nguồn dự án cũ viết bằng Golang, sau khi sao chép, tôi cần thay thế tên module cũ thành tên mới. Tuy nhiên, do có rất nhiều thư mục và tệp tin trong dự án, việc sửa từng tệp một sẽ rất mất thời gian và phức tạp, vì vậy tôi cần đến sự trợ giúp của sed.
sed là một trình chỉnh sửa dòng
Ví dụ: nếu bạn muốn thay thế tất cả các trường hợp sunzhongwei.com/member thành nhà cái uy tín bk8vie sunzhongwei.com/repair trong thư mục, lệnh sẽ như sau:
find /home/zhongwei/work/server_repair/backend/ \( -type d -name .git -prune \) -o -type f | xargs -0 sed -i 's/sunzhongwei\.com\/member/sunzhongwei\.com\/repair/g'
Để so sánh:
> find /home/zhongwei/work/server_repair/backend \( -type d -name .git -prune \) -o -type f -print0
/home/zhongwei/work/server_repair/backend/go.mod/home/zhongwei/work/server_repair/backend/go.sum/home/zhongwei/work/server_repair/backend/main.go
> find /home/zhongwei/work/server_repair/backend \( -type d -name .git -prune \) -o -type f
/home/zhongwei/work/server_repair/backend/go.mod
/home/zhongwei/work/server_repair/backend/go.sum [kèo bóng đá](/blog/wordpress-site-is-malicious-postxmlrpc-php-lead-to-ali-cloud-server-hang-up/)
/home/zhongwei/work/server_repair/backend/main.go
Khi thêm tham số print0, nó giúp ngăn cách danh sách tệp không phải bằng ký tự xuống dòng mà bằng ký tự NULL. Điều này giúp tránh các vấn đề có thể xảy ra nếu tên tệp chứa ký tự xuống dòng. Tuy nhiên, tôi cảm thấy rằng điều này hơi quá lo lắng đối với dự án của mình, vì tôi không nghĩ rằng các tên tệp trong dự án của tôi sẽ bao giờ chứa ký tự xuống dòng.