2012-01-18 39 views
12

Tôi đang trong quá trình tạo lớp User trong đó một trong các phương pháp là get_privileges();.Cách thay đổi tất cả các lần xuất hiện của một từ trong tất cả các tệp trong một thư mục

Sau giờ đóng sầm đầu vào bàn phím, tôi cuối cùng đã phát hiện ra rằng các coder trước người mà tôi được thừa hưởng cơ sở dữ liệu đặc biệt này đánh vần từ "đặc quyền" là "privelages" trong cơ sở dữ liệu MySQL, và do đó cũng ở khắp mọi nơi trong hàng trăm tệp truy cập "privelages", nó được viết theo cách đó.

Có cách nào trong Linux (Ubuntu Server ) mà tôi có thể đi qua mọi nơi trong thư mục /var/www và thay thế "privelages" với "đặc quyền", vì vậy mà tôi không cần phải đối phó với lỗi này và mã xung quanh nó?

Trả lời

27

Một biến thể mà sẽ đưa vào các thư mục con của tài khoản (chưa được kiểm tra):

find /var/www -type f -exec sed -i 's/privelages/privileges/g' {} \; 

này sẽ find tất cả các file (không phải thư mục, theo quy định của -type f) dưới /var/www, và thực hiện lệnh sed để thay thế "privelages" bằng "đặc quyền" trên mỗi tệp mà nó tìm thấy.

+8

Cảm ơn - đối với những người trên máy Mac có BSD sed. Bạn sẽ cần phải thêm phần mở rộng vào đối số -i. Giống như vậy: 'sed -i" "/ prive ...' – xer0x

+0

Nếu bạn chỉ muốn chạy 'sed' trên các tệp chứa lỗi chính tả (bạn sẽ muốn nếu dự án của bạn chứa hàng nghìn tệp) , bạn có thể làm 'grep -l -r" privelages "/ var/www | xargs -I "@" sed -i 's/privelages/privilege/g' @ ' –

+0

sử dụng grep và sau đó sed có lẽ kém hiệu quả hơn là chỉ sử dụng sed, vì nó có nghĩa là mở và đọc mọi tệp hai lần – cegfault

5

Check-out này: http://www.cyberciti.biz/faq/unix-linux-replace-string-words-in-many-files/

cd /var/www 
sed -i 's/privelages/privileges/g' * 
+0

Cảm ơn bạn rất nhiều, tôi đánh giá cao câu trả lời. –

+1

Bạn sẽ cần phải thêm 'find', hoặc sử dụng một shell cho phép bạn tạo tất cả các tập tin trong tất cả các thư mục con (gợi ý:' **/* 'thực hiện điều này trong một số shell) nếu bạn muốn recurse subdirectories. Đây là câu hỏi thường gặp; tìm kiếm các câu hỏi tương tự. Đồng cảm với bạn vì phải đối phó với người tiền nhiệm thất học ... – tripleee

Các vấn đề liên quan