2013-03-16 39 views
5

Có thể trong một lệnh duy nhất (không có vòng lặp) để xóa nội dung của từng tệp trong một thư mục không?Linux có thể dọn sạch nội dung của tất cả các tệp trong một thư mục

+2

Tại sao bạn muốn tránh vòng lặp? – nneonneo

+1

Một lệnh AWK hoặc Bash được chế tác tốt có được coi là câu hỏi lập trình không? –

+0

tôi muốn một lệnh duy nhất chạy từ dòng lệnh. Tôi chắc chắn có một số cách để làm điều đó với fine-type f -exec echo "" ..... chỉ cần không thể hoàn thành nó –

Trả lời

6

Sử dụng truncate:

truncate -s 0 directory/* &> /dev/null 
9

Đây là xấu xí như địa ngục, nhưng nó hoạt động:

find . -type f -exec sh -c 'echo -n "" > $1' sh {} \; 

này sẽ xóa tất cả các tập tin trong mỗi thư mục con.

Để chỉ xóa các tập tin trong thư mục hiện hành:

for i in *; do cat /dev/null > $i; done 

(Vâng, đó là một vòng lặp, nhưng đó là một dòng.)

+0

Tôi thấy rằng [this] (https://gist.github.com/qaisjp/8871c717ec300d704ae3) là tốt cho tôi, nhưng bạn có thể muốn thay đổi printf đầu ra để "" Ngoài ra, 'echo -n" "' thực sự đặt '-n' trong mỗi tệp. – qaisjp

+2

'echo -n" "' là không cần thiết; ''> $ 1'' sẽ làm. – rymo

+0

đẹp! :-D :-p –

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