2012-08-10 25 views
12

Tôi có khoảng 100 tệp .txt chứa văn bản thuần túy. Bằng cách nào đó, một số dữ liệu đã bị hỏng và cần phải được tìm thấy/thay thế.Tôi có thể tìm kiếm/thay thế nhiều tệp .txt một cách nhanh chóng từ Thiết bị đầu cuối không?

Tôi cần tìm kiếm ký tự '-' và thay thế bằng dấu gạch ngang dài: '-'.

Có cách nào để thực hiện việc này nhanh chóng bằng lệnh trong terminal không?

Tên của tệp .txt trong thư mục của tôi được đánh số liên tiếp: 1.txt, 2.txt, v.v.

Cảm ơn!

+0

thể [trùng lặp] (http://stackoverflow.com/q/ 8384809/148680) – chb

+0

Komodo Edit (http://www.activestate.com/komodo-edit) có tính năng "Tìm/Thay thế tệp". Một trình soạn thảo miễn phí cho Mac, Windows và Linux. – jsherk

Trả lời

34

GNU sed:

sed -i 's/--/—/g' *.txt 

OSX BSD sed:

Bạn cần phải xác định một phần mở rộng tập tin sao lưu. Để tạo một tập tin sao lưu với phần mở rộng: .txt.bak:

sed -i '.bak' 's/--/—/g' *.txt 

để thay thế hoàn toàn các tập tin, xác định một phần mở rộng trống:

sed -i '' 's/--/—/g' *.txt 
+0

Điều đó đã làm được! Cảm ơn một bó – Lizza

+0

@Casper: Vui vì tôi có thể giúp :-) – Steve

+0

Ý nghĩa của tiêu đề “Trên OSX” là gì? Ví dụ đầu tiên không hoạt động trên OS X? [Đọc câu trả lời của viện trợ @] Oh. Bạn có thể nói điều gì đó về ví dụ đầu tiên và lý do tại sao nó khác và nền tảng nào khác biệt? Ngoài ra, là ví dụ thứ hai dành riêng cho OS X hay nó áp dụng cho BSD? –

3

sed -i 's/--/–/g' *.txt nên hoạt động. Các -i cờ để sed làm cho nó hành động trên các tập tin tại chỗ, các s là viết tắt của thay thế, và g làm cho nó thay thế nhiều lần xuất hiện của mô hình trên cùng một dòng. Tra cứu tài liệu của sed để biết thêm thông tin.

EDIT: Tính năng này hoạt động trên GNU/Linux; nó chỉ ra rằng cú pháp hơi khác trên OSX (xem bình luận và câu trả lời được chấp nhận).

+0

Vì vậy, tôi là khá mới với dòng lệnh ... Tôi chỉ cần đặt lệnh của bạn vào Terminal trong thư mục với các tập tin và có này: sed: 1: "base1.txt": undefined label 'ase1.txt'. Có suy nghĩ gì không? Cảm ơn! – Lizza

+0

Tôi chỉ nhận ra rằng các tập tin không thực sự được đặt tên theo cách tôi mô tả trong câu hỏi ban đầu. Họ được đặt tên base1.txt, base2.txt, vv Làm thế nào mà thay đổi mọi thứ? – Lizza

+0

@Casper: không. '* .txt' đọc từng tập tin' .txt' trong thư mục làm việc hiện tại – Steve

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