2011-12-21 39 views
14

Làm cách nào để thay thế "abc" bằng "abcd" trên tất cả các tệp của thư mục bằng cách sử dụng trình bao?Linux tìm và thay thế

Có thể sử dụng lệnh sed không?

+1

Có nó là có thể. Khám phá trang người đàn ông .... –

+0

@ Vikram.exe trang người đàn ông không giải thích bất cứ điều gì về sed regexes mặc dù – fge

+0

@fge, có một trang người đàn ông cho rằng cũng :) hoặc kiểm tra: http: // linux. die.net/man/7/regex –

Trả lời

35

Hãy thử lệnh sau cho file file.txt:

sed -i 's/abc/abcd/g' file.txt 


Hãy thử lệnh sau cho tất cả các file trong thư mục hiện hành:

find . -maxdepth 1 -type f -exec sed -i 's/abc/abcd/g' {} \; 

Đối với các tập tin trong thư mục hiện hành và tất cả các thư mục con:

find . -type f -exec sed -i 's/abc/abcd/g' {} \; 

Hoặc nếu bạn là fan hâm mộ của xargs:

find . -type f | xargs -I {} sed -i 's/abc/abcd/g' {} 
+0

Tôi cần nó cho tất cả các tập tin trong một thư mục, không phải cho một tập tin –

+0

kiểm tra chỉnh sửa của tôi;) – kbdjockey

+1

+1 cho tìm. bởi vì nếu dir có subDir, các sed ... * sẽ không thành công. – Kent

1
sed -i 's/abc/&d/g' * 

nên làm việc.

+0

Nó cũng sẽ thay thế '0abcd',' abcd' vv – fge

+0

có, câu hỏi chỉ nói để thay thế abc. Không có chỉ dẫn về "toàn bộ từ". – Nikodemus

0

Có:

find /the/folder -type f -exec sed -i 's,\<abc\>,&d,g' {} \; 
Các vấn đề liên quan