Apakah ada utilitas baris perintah Windows untuk membuat daftar file terbesar melebihi ukuran spesifik dalam sub-direktori?

17

Ingin dapat menemukan path lengkap file di pohon direktori yang melebihi ukuran tertentu (katakanlah 10MB).

Saat ini mengetahui Microsoft Diruse (bagian dari Alat Dukungan Windows XP Paket Layanan 2 ) yang melakukan apa yang saya inginkan kecuali hanya mencantumkan ukuran direktori daripada file.

Umber Ferrule
sumber

Jawaban:

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

akan memindai D: \ dan sub-direktorinya, mencari semua file yang tanggal modifikasi terakhirnya lebih besar dari "17-JAN-2012" dan yang ukurannya lebih besar atau sama dengan 200MB, kemudian cetak detailnya.

forfiles disertakan pada beberapa Server Windows, tetapi tidak secara default pada Windows XP. Anda dapat mengekstraknya dari unduhan "Windows Server 2003 Resource Kit" di http://www.microsoft.com/download/en/details.aspx?id=17657 (meskipun dikatakan untuk Windows Server, ini berjalan pada Win XP tanpa masalah).

belajar Scrapy
sumber
Luar biasa - ini melakukan apa yang saya inginkan (segera setelah saya memperbaiki tanggal untuk UK 17/01/2012). Terima kasih.
Umber Ferrule
6

Ini terdengar seperti pekerjaan untuk PowerShell

dapatkan-childitem

Arahkan ke direktori yang dimaksud, periksa properti dengan:

get-childitem | get-member

panjang dan nama lengkap terlihat menarik, misalnya:

get-childitem |ft fullname, length -auto

Setelah Anda menguasai dasar-dasarnya cobalah memfilter dengan pernyataan where.

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

Eksperimen dengan 100000

Guy Thomas
sumber
Gunakan Get-ChildItem -recurse untuk mencari secara rekursif
themadmax
3

Port Linux Utilities di UnxUtils berisi perintah Linux find .

Anda harus mengganti nama find.exe menjadi sesuatu yang lain, contoh xfind.exe, karena find adalah fungsi bawaan pada Prompt Perintah Windows. Anda kemudian dapat menemukan semua file lebih besar dari 1000000 bytes oleh:

direktori xfind -ukuran +1000000 -cetak

Ini adalah doc untuk menemukan perintah Linux , tetapi saya tidak tahu bagaimana tepatnya itu diterapkan di UnxUtils dan untuk versi find mana.

harrymc
sumber
Saya percaya GnuWin32 lebih mutakhir: gnuwin32.sourceforge.net ... plus selalu ada Cygwin: cygwin.com
quack quixote
@ ~ quack: Anda benar, hanya saja paket FileUtils di GnuWin32 tampaknya cukup rumit untuk diinstal, membutuhkan beberapa file.
harrymc
cukup adil. Saya pengguna cygwin, secara pribadi. dan saya cenderung lebih suka up-to-date daripada sederhana untuk menginstal. tapi terima kasih sudah menjelaskan alasanmu.
Quack quixote
2

Ambil Command Console LE (yang akhirnya saya sarankan banyak baru-baru ini), pengganti gratis untuk cmd.exe dengan banyak fitur tambahan, memiliki perintah untuk itu:PDIR

pdir /s /(fpn z) /[s10485760,]
  • /s artinya secara rekursif, jalankan perintah dari direktori yang ingin Anda cari.
  • /(fpn z) adalah format untuk menampilkan hasilnya, di sini: fullpathfullname size
  • /[s10485760,] berarti ukuran = 10 MB atau lebih besar
Snark
sumber
1

Perintah find dari utilitas cygwin melakukan ini. Untuk kebutuhan anda

menemukan path lengkap file di pohon direktori yang melebihi ukuran tertentu (katakanlah 10MB).

ini memberikan hasil:

temukan -ukuran + 10 J-ketik f-printf "% p% s \ n"

-size +10Mmemberi Anda "objek" lebih besar dari 10 megabyte

-type f memberi Anda file saja

-printfmencetak file yang ditemukan, %ppath, %sadalah size (dalam bytes) dan \nmerupakan baris baru.

Gerd Klima
sumber
1

Saya baru saja terjadi pada alat baris perintah, Disksum , yang tampaknya mirip dengan diruse , tetapi memberikan dua bentuk output:

  • diurutkan berdasarkan jumlah file per direktori (naik)
  • diurutkan berdasarkan ukuran direktori (naik)
Umber Ferrule
sumber
1

Saya percaya menggunakan solusi ini lebih akurat dengan deskripsi:

Unduh perintah baris executable sfk.exe di http://sourceforge.net/projects/swissfileknife/files/

Gunakan seperti ini

skf.exe list -big

Contoh output (disingkat):

[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

Jika Anda hanya menginginkan 10 file teratas yang lebih besar, gunakan:

skf.exe list -big=10

Anda dapat menyesuaikannya lebih lanjut dengan mengikuti instruksi dari: http://stahlworks.com/dev/index.php?tool=list

vicenteherrera
sumber
Jawaban yang bagus, saya merujuknya di sini; softwarerecs.stackexchange.com/questions/30824/…
DankyNanky
-2

Saya tahu bahwa pertanyaannya adalah tentang baris perintah, tetapi pertanyaan ini terus muncul di Google, jadi tambahkan cara sederhana lainnya - via Explorer.

  1. buka lokasi (disk, atau folder) tempat Anda ingin mencari file besar di Windows Explorer
  2. di kotak pencarian kanan-atas ketik "size: gigantic" (kotak akan menyarankan secara otomatis sintaks dan opsi lain yang mungkin)
jitbit
sumber
Pertanyaan sedang mencari jawaban baris perintah.
john
Ini jawaban yang bagus dan valid. Seharusnya tidak diturunkan.
zar