Có tiện ích dòng lệnh Windows để liệt kê các tệp lớn nhất vượt quá kích thước cụ thể trong thư mục con không?


17

Muốn có thể tìm thấy đường dẫn đầy đủ của các tệp trong cây thư mục vượt quá kích thước cụ thể (giả sử là 10MB).

Hiện tại, chúng tôi biết về Diruse của Microsoft (một phần của Công cụ hỗ trợ Windows XP Service Pack 2 ) thực hiện những gì tôi muốn ngoại trừ nó chỉ liệt kê kích thước thư mục chứ không phải tệp.

Câu trả lời:


29
forfiles /P D:\ /M *.* /S /D +"01/17/2012"  /C "cmd /c if @fsize gtr 209715200 echo @path @fsize @fdate @ftime"

sẽ quét D: \ và các thư mục con của nó, tìm kiếm tất cả các tệp có ngày sửa đổi cuối cùng lớn hơn "17-JAN-2012" và có kích thước lớn hơn hoặc bằng 200MB, sau đó in chi tiết của chúng.

forfiles được bao gồm trên một số Máy chủ Windows, nhưng không phải mặc định trên Windows XP. Bạn có thể trích xuất nó từ bản tải xuống "Bộ tài nguyên Windows Server 2003" tại http://www.microsoft.com/doad/en/details.aspx?id=17657 (althou nói là dành cho Windows Server, nó chạy trên Win XP không vấn đe).


Tuyệt vời - điều này đã làm những gì tôi muốn (ngay sau khi tôi ấn định ngày cho Vương quốc Anh 17/01/2012). Cảm ơn.
Umber Ferrule

6

Điều này nghe có vẻ như một công việc cho PowerShell's

nhận con

Điều hướng đến thư mục trong câu hỏi, kiểm tra thuộc tính với:

get-childitem | get-member

chiều dài và FullName trông thú vị, ví dụ:

get-childitem |ft fullname, length -auto

Khi bạn đã nắm vững những điều cơ bản, hãy thử lọc với câu lệnh where.

get-childitem | where-object {$_.length -gt 10000} |ft fullname, length -auto

Thử nghiệm với 100000


Sử dụng Get-ChildItem -recurse để tìm kiếm đệ quy
themadmax

3

Cổng tiện ích Linux tại UnxUtils chứa lệnh tìm Linux .

Bạn nên đổi tên find.exe thành một cái gì đó khác, ví dụ xfind.exe, vì find là một hàm tích hợp trong Dấu nhắc lệnh của Windows. Sau đó, bạn có thể tìm thấy tất cả các tệp lớn hơn 1000000 byte bằng cách:

thư mục xfind -size +1000000 -print

Đây là tài liệu cho lệnh tìm Linux , nhưng tôi không biết chính xác nó đã được triển khai như thế nào trong UnxUtils và phiên bản tìm kiếm nào.


tôi tin rằng GnuWin32 cập nhật hơn: gnuwin32.sourceforge.net ... cộng với luôn có Cygwin: cygwin.com
quack quixote

@ ~ quack: Bạn nói đúng, chỉ có điều là gói FileUtils trong GnuWin32 có vẻ khá phức tạp để cài đặt, yêu cầu khá nhiều tệp.
harrymc

đủ công bằng. Tôi là một người dùng Cygwin, cá nhân. và tôi có xu hướng thích cập nhật hơn đơn giản để cài đặt. nhưng cảm ơn vì đã giải thích lý do của bạn
quack quixote

2

Hãy dùng Command Console LE (mà cuối cùng tôi đã giới thiệu rất nhiều), một sự thay thế miễn phí cho cmd.exe với rất nhiều tính năng bổ sung, có một lệnh cho điều đó:PDIR

pdir /s /(fpn z) /[s10485760,]
  • /s có nghĩa là đệ quy, chạy lệnh từ thư mục bạn muốn tìm kiếm.
  • /(fpn z) là định dạng để hiển thị kết quả, ở đây: fullpathfullname size
  • /[s10485760,] có nghĩa là kích thước = 10 MB hoặc lớn hơn

1

Lệnh find của các tiện ích cygwin thực hiện điều này. Đối với yêu cầu của bạn

tìm đường dẫn đầy đủ của các tệp trong cây thư mục vượt quá kích thước cụ thể (giả sử 10MB).

Điều này cho kết quả:

tìm kích thước + 10M -type f -printf "% p% s \ n"

-size +10Mcung cấp cho bạn "đối tượng" lớn hơn 10 megabyte

-type f chỉ cung cấp cho bạn các tập tin

-printfin các tập tin tìm thấy, %plà đường dẫn, %slà kích thước (tính bằng byte) và \nlà dòng mới.


1

Tôi vừa mới gặp công cụ dòng lệnh, Disksum , có vẻ tương tự như diruse , nhưng đưa ra hai dạng đầu ra:

  • được sắp xếp theo số lượng tập tin trên mỗi thư mục (tăng dần)
  • được sắp xếp theo kích thước thư mục (tăng dần)

1

Tôi tin rằng sử dụng giải pháp này là chính xác hơn với mô tả:

Tải xuống dòng lệnh thực thi sfk.exe tại http://sourceforge.net/projects/swissfileknife/files/

Sử dụng nó như thế này

skf.exe list -big

Ví dụ đầu ra (viết tắt):

[listing 50 of 78 files by size:]
        3951 mens\noname_30.mht
        3996 mens\noname_14.mht
        3996 mens\noname_25.mht
        4060 mens\noname_24.mht
        4263 mens\noname_31.mht
        4701 mens\noname_1.mht
       14568 Thumbnail Restore.zip
       45056 netmeter.exe
     [...]
     12337752 rktools.exe
     16826024 sp35378.exe
     16926496 jre-6u30-windows-i586.exe
     19480227 SugarCE-6.2.4.zip
     21073936 vlc-1.1.11-win32.exe
     22083184 EasyPHP-5.3.8.1-setup.exe
     25517642 MPSOFTWARE.phpDesigner.v8.0.0.145-CRD.rar
     31085033 phpdesigner8usb.zip
     48835640 netbeans 7.exe
     58900704 ZendServer-CE-php-5.2.17-5.6.0-Windows_x86.exe    
     491538432 53400105.iso

Nếu bạn chỉ muốn 10 tệp lớn nhất, hãy sử dụng:

skf.exe list -big=10

Bạn có thể tùy chỉnh thêm theo hướng dẫn từ: http://stahlworks.com/dev/index.php?tool=list


Câu trả lời tuyệt vời, tôi đã tham khảo nó ở đây; softwarerecs.stackexchange.com/questions/30824/ từ
DankyNanky

-2

Tôi biết rằng câu hỏi là về dòng lệnh, nhưng câu hỏi này tiếp tục xuất hiện trong Google, vì vậy hãy thêm một cách đơn giản khác - thông qua Explorer.

  1. mở vị trí (đĩa hoặc thư mục) nơi bạn muốn tìm tệp lớn trong Windows Explorer
  2. trong hộp tìm kiếm phía trên bên phải, gõ "size: gigantic" (hộp sẽ tự động đề xuất cú pháp và các tùy chọn có thể khác)

Câu hỏi đã tìm kiếm câu trả lời dòng lệnh.
john

Đây là một trả lời tốt và hợp lệ. Nó không nên bị hạ cấp.
zar
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.