Câu hỏi Sử dụng du.exe (Sysinternals) là nó có thể hiển thị các thư mục trên một kích thước nhất định?


du.exe cho phép bạn xác định đệ quy các thư mục chiếm một lượng lớn không gian. Ví dụ: phần sau sẽ cho bạn biết kích thước của tất cả các thư mục từ c:\ 3 cấp độ sâu:

du.exe -l 3 c:\

Làm thế nào tôi có thể lọc đầu ra này để chỉ hiển thị cho tôi các thư mục trên 1GB?

Đây là một trích xuất của đầu ra từ du.exe để tham khảo:

Du v1.4 - report directory disk usage
Copyright (C) 2005-2011 Mark Russinovich
Sysinternals - www.sysinternals.com

   6,344,864  c:\Windows\winsxs
  18,268,671  c:\Windows
 483,343,308  c:\
Files:        412125
Directories:  42072
Size:         494,943,548,281 bytes
Size on disk: 487,560,269,896 bytes

4
2018-05-05 16:58


gốc




Các câu trả lời:


Như câu trả lời khác nói, bạn không thể làm điều đó với du.exe một mình. PowerShell để giải cứu!

.\du.exe -c -l 3 C:\ | ConvertFrom-Csv -Header Size,Path | Where-Object { [int]$_.Size -gt 1048576 } | Sort-Object { [int]$_.Size } -descending

Giải trình

Phá vỡ lệnh dài đó xuống các bit riêng lẻ, mỗi bit được chuyển vào một trong các lệnh tiếp theo:

.\du.exe -c -l 3 C:\

Đây là cơ bản những gì bạn bắt đầu với, ngoại trừ -c thông số cho biết du để định dạng đầu ra dưới dạng CSV.

ConvertFrom-Csv -Header Size,Path

Điều này sẽ lấy kết quả CSV từ du và chuyển đổi nó thành PowerShell hashtable. Vì du không cung cấp tiêu đề có tên cột, điều đó phải được thực hiện thủ công.

Where-Object { [int]$_.Size -gt 1048576 }

Bộ lọc này lọc dữ liệu, chỉ trả lại những hàng có kích thước lớn hơn 1 GB (du trả về kích cỡ bằng KB và 1 GB = 1048576 KB). Lưu ý [int] một phần, để cho PowerShell biết rằng nó đang xử lý dữ liệu số.

Sort-Object { [int]$_.Size } -descending

Điều này sắp xếp dữ liệu theo kích cỡ, theo thứ tự giảm dần (một lần nữa xác định rằng dữ liệu cần sắp xếp theo là số). Đây là tùy chọn, tất nhiên.


7
2018-05-05 17:49





Trong phiên bản du.exe mới nhất thêm một tiêu đề với Powershell ConvertFrom-Csv không làm việc ra khỏi hộp, bởi vì du.exe gắn thêm tiêu đề của riêng nó trong danh sách. Những gì chúng ta cần làm là chọn tiêu đề hiện tại với lệnh chọn.

du.exe -c -l 3 C:\ | ConvertFrom-Csv | select Path,DirectorySize | Where-Object { [int]$_.DirectorySize -gt 1048576 }

4
2017-07-01 19:22





Tùy chọn đó không khả dụng với DU 1.4

Cách sử dụng: du [-c] [-l (các cấp) | -n | -v] [-u] [-q] (thư mục)

-c Đầu ra in dưới dạng CSV.

-l Chỉ định chiều sâu thư mục con của thông tin (mặc định là tất cả các cấp).

-n Không tái chế.

-q Yên tĩnh (không có biểu ngữ).

-u Đếm từng phiên bản của tệp được liên kết cứng.

-v Hiển thị kích cỡ (tính bằng KB) của các thư mục trung gian.

Vì vậy, chỉ cần sử dụng DU không thể giới hạn đầu ra cho một cái gì đó của một kích thước cụ thể.


1
2018-05-05 17:15



Rất vui khi kết hợp với các công cụ khác có sẵn trên dòng lệnh. - Iain
Sau đó, có bạn đi. Indrek có câu trả lời bạn muốn. Tôi đã cho nó một +1. - Bon Gart