2013-02-28 25 views
25

Tôi đang cố gắng đánh giá việc sử dụng đĩa của một số tài khoản người dùng Unix. Đơn giản, tôi đang sử dụng lệnh sau:Loại trừ tất cả các thư bị từ chối cho phép từ "du"

du -cBM --max-depth=1 | sort -n 

Nhưng tôi đã nhìn thấy rất nhiều thông báo lỗi như dưới đây. Làm cách nào tôi có thể loại trừ tất cả các thông báo “Quyền bị từ chối” như vậy khỏi màn hình?

du: `./james/.gnome2': Permission denied 

Yêu cầu của tôi có thể là rất giống với danh sách sau đây, bằng cách thay thế “tìm” đến “du”.

How can I exclude all "permission denied" messages from "find"?

Các chủ đề sau đây không hoạt động. Tôi đoán tôi đang sử dụng bash.

Excluding hidden files from du command output with --exclude, grep -v or sed

Trả lời

38
du -cBM --max-depth=1 2>/dev/null | sort -n 

hoặc tốt hơn trong bash (chỉ lọc ra lỗi này đặc biệt, không phải tất cả như đoạn cuối cùng)

du -cBM --max-depth=1 2> >(grep -v 'Permission denied') | sort -n 
+0

chính xác những gì tôi muốn. cảm ơn bạn! –

1

2>/dev/nul ẩn chỉ thông báo lỗi.

lệnh du luôn cố gắng chạy qua thư mục. Hãy tưởng tượng rằng bạn có hàng ngàn dirs?

du cần eval, nếu bạn có persmission chạy nếu không, hãy làm theo với dir tiếp theo ...

0

Tôi muốn sử dụng cái gì ngắn gọn mà không bao gồm chỉ các dòng bạn không muốn xem. Chuyển stderr để stdout, và grep để loại trừ tất cả "từ chối" s:

du -cBM --max-depth=1 2>&1 | grep -v 'denied' | sort -n