Rumah pembangunan bahagian belakang Golang Isih Item dalam Direktori mengikut Saiz Menurun Menggunakan Python, PowerShell, C# atau Go

Isih Item dalam Direktori mengikut Saiz Menurun Menggunakan Python, PowerShell, C# atau Go

Nov 08, 2024 am 08:34 AM

Atur cara mudah untuk mengisih semua item dalam direktori, sama ada fail atau folder, mengikut saiz menurun.

Mengisih item dalam direktori mengikut saiz menurun tidaklah semudah yang anda fikirkan, sama ada anda menggunakan pelayar fail grafik atau baris arahan, kerana sistem pengendalian tidak mengira jumlah saiz kandungan direktori semasa menyemak imbas direktori pokok. Artikel ini menawarkan program kerja yang lengkap untuk mengatasinya pada kebanyakan sistem pengendalian.

Masalah

Mungkin anda akan mendapati perkara berikut biasa:

Sama ada untuk kerja atau projek peribadi, saya suka mengatur aset digital saya dengan mencipta direktori induk, katakan satu yang dipanggil Projek dan menyimpan semua kandungan untuk projek individu di sana. Jika projek kecil dan tidak melibatkan banyak kandungan, saya akan menggunakan satu fail, biasanya fail teks. Jika projek melibatkan lebih banyak kandungan, sebut fail teks serta beberapa tangkapan skrin, saya akan mencipta folder untuk projek itu dan meletakkan semua aset yang berkaitan di sana. Jadi, dari perspektif saya, fail teks tunggal dan folder adalah setara dalam erti kata masing-masing mewakili projek. Satu-satunya perbezaan ialah folder itu mewakili projek yang lebih besar, satu dengan lebih banyak bahan.

Kadang-kadang saya ingin melihat projek mana yang terbesar pada masa ini, yang mempunyai paling banyak barangan. Ini biasanya berlaku kerana saya telah lama tidak bekerja di kawasan tertentu, jadi apabila saya kembali kepadanya, saya ingin melihat projek mana yang mempunyai kandungan paling banyak. Alasan saya ialah projek dengan kandungan terbanyak mestilah yang paling lengkap, dan oleh itu mungkin projek yang harus saya mulakan dahulu, kerana ia akan menjadi paling mudah untuk diselesaikan.

Sebagai contoh, pertimbangkan direktori dengan kandungan berikut:

Name Type Size
Huge Project.txt File 2.6KB
Larger Project Folder 1.07KB
0 - Tiny Project Folder 0KB
Basic Project.txt File 0.36KB
Big Project.txt File 2.11KB

Isih direktori di atas mengikut saiz menurun akan menghasilkan:

Huge Project.txt        2.6KB
Big Project.txt 2.11KB
Larger Project  1.07KB
Basic Project.txt       0.36KB
0 - Tiny Project        0KB
Salin selepas log masuk
Salin selepas log masuk

Walau bagaimanapun, ini bukan apa yang kami dapat apabila kami mengklik pengepala lajur Saiz dalam penyemak imbas fail grafik pada Windows, Mac dan Linux.

Windows

Sort Items in a Directory by Descending Size Using Python, PowerShell, C#, or Go

Windows File Explorer - Fail diisih mengikut saiz menurun dan folder dipaparkan di bawah, dalam susunan abjad menaik.

Mac

Sort Items in a Directory by Descending Size Using Python, PowerShell, C#, or Go

Pencari MacOS - Kandungan direktori diisih sama seperti pada Windows.

Linux

Sort Items in a Directory by Descending Size Using Python, PowerShell, C#, or Go

Apl Fail Linux (Ubuntu) - Folder dan fail diisih dengan betul, tetapi secara individu; folder dahulu, kemudian fail. Jadi item yang muncul pertama dalam senarai sebenarnya bukanlah item terbesar dalam direktori.

Menggunakan baris arahan menyediakan output yang agak hampir dengan yang diingini, tetapi masih tidak betul sepenuhnya:

Windows

dir /b /o:-d

Output:

Larger Project
0 - Tiny Project
Huge Project.txt
Big Project.txt
Basic Project.txt

Salin selepas log masuk
Salin selepas log masuk

Mac dan Linux

Terdapat pelbagai kombinasi perintah untuk pengisihan kandungan direktori pada sistem berasaskan UNIX seperti Mac dan Linux. Kebanyakannya melibatkan penggunaan du, sort, dan ls. Contoh lain yang saya temui dalam talian juga turut memasukkan carian dan grep ke dalam campuran.

Inilah yang saya cuba:

du | menyusun

du -a -h --max-depth=1 | sort -hr

Output:

32K     .
8.0K    ./Larger Project
8.0K    ./0 - Tiny Project
4.0K    ./Huge Project.txt
4.0K    ./Big Project.txt
4.0K    ./Basic Project.txt

Salin selepas log masuk
Salin selepas log masuk

ls

Menggunakan suis -S pada arahan ls sepatutnya melakukan apa yang saya cari, mengisih item mengikut saiz menurun.

ls -S

Output:

'0 - Tiny Project'  'Larger Project'  'Huge Project.txt'  'A - Big Project.txt'  'Basic Project.txt'
Salin selepas log masuk
Salin selepas log masuk

Output masih dimatikan. Saya cuba menambah suis -l (panjang).

ls -lS

Output:

total 20
drwx---r-x 2 admin admin 4096 Sep 20 21:49 '0 - Tiny Project'
drwx---r-x 2 admin admin 4096 Sep 20 21:49 'Larger Project'
-rw-rw-r-- 1 admin admin 2667 Sep 20 21:49 'Huge Project.txt'
-rw-rw-r-- 1 admin admin 2164 Sep 20 21:49 'Big Project.txt'
-rw-rw-r-- 1 admin admin  368 Sep 20 21:49 'Basic Project.txt'
Salin selepas log masuk

Keluaran termasuk lebih terperinci, seperti yang dijangkakan, tetapi susunan isihan adalah sama seperti sebelumnya.

Punca Punca

Walaupun output pelbagai arahan tidak memberikan output yang diingini, ia menyerlahkan punca masalah. Apabila menyemak imbas pepohon direktori, sistem pengendalian tidak berulang ke dalam folder untuk mengira jumlah saiz kandungannya. Sebaliknya, mereka menganggap semua folder sebagai mempunyai saiz tetap yang sama. Biasanya ini ialah saiz blok minimum sistem fail, biasanya 4096 bait, 4KB.

Penyelesaian

Mesti ada sekurang-kurangnya sedozen alat percuma di luar sana yang menyelesaikan masalah ini, tetapi secara jujur, saya tidak melihat pun. Menulis skrip/program yang melakukan perkara yang sama dan kemudian berkongsi di sini terasa seperti lebih mudah, melibatkan kurang kembung, semoga berguna untuk orang lain, dan pastinya lebih menyeronokkan.

Saya sudah cukup lama melamun. Inilah kodnya:

Ular sawa

Huge Project.txt        2.6KB
Big Project.txt 2.11KB
Larger Project  1.07KB
Basic Project.txt       0.36KB
0 - Tiny Project        0KB
Salin selepas log masuk
Salin selepas log masuk

PowerShell

Larger Project
0 - Tiny Project
Huge Project.txt
Big Project.txt
Basic Project.txt

Salin selepas log masuk
Salin selepas log masuk

C Tajam

32K     .
8.0K    ./Larger Project
8.0K    ./0 - Tiny Project
4.0K    ./Huge Project.txt
4.0K    ./Big Project.txt
4.0K    ./Basic Project.txt

Salin selepas log masuk
Salin selepas log masuk

Pergi

'0 - Tiny Project'  'Larger Project'  'Huge Project.txt'  'A - Big Project.txt'  'Basic Project.txt'
Salin selepas log masuk
Salin selepas log masuk

Terdapat beberapa perbezaan kecil antara empat pelaksanaan, tetapi pendekatan umum yang digunakan untuk keempat-empat adalah sama:

  1. Buat fungsi rekursif yang mengembalikan koleksi pasangan nilai kunci nama dan saiz item (fail atau folder).
  2. Dalam fungsi atau blok utama, lakukan beberapa pengesahan input asas dan jika pengguna telah menyediakan laluan yang sah, jalankan fungsi rekursif pada laluan itu.
  3. Isih output fungsi rekursif mengikut nilai (saiz), dalam tertib menurun.
  4. Cetak output yang diisih ke konsol. Setiap baris yang dicetak mematuhi format: nama item, diikuti dengan aksara tab, diikuti dengan saiz item dibahagikan dengan 1024 dan dibundarkan kepada dua tempat perpuluhan untuk mendapatkan saiz dalam kilobait, diikuti dengan "KB" untuk menandakan unit saiz.

Penggunaan

Pada baris arahan, lalukan laluan ke direktori yang anda ingin isikan sebagai parameter pertama. Saya tidak akan menyenaraikan semua contoh yang mungkin, tetapi berikut ialah pasangan, dengan mengandaikan anda telah menyalin kod dan menyimpannya sebagai nama fail dir_desc, singkatan untuk "direktori menurun", serta sambungan fail yang sesuai:

Menggunakan Python pada Mac atau Linux:

python3 dir_desc.py

Menggunakan PowerShell pada Windows:

powershell -f dir_desc.ps1

Perbezaan Antara Bahasa dan Perlaksanaan

  • Python dan Go menyerupai C dan bahasa lain seperti C kerana argumen baris arahan pertama ialah item kedua dalam tatasusunan args. Dalam bahasa .NET, PowerShell dan C#, hujah pertama ialah item pertama dalam tatasusunan args.
  • Dalam PowerShell, tidak perlu mencipta fungsi rekursif yang berasingan, kerana hasil yang diinginkan boleh dicapai dengan lebih mudah dengan menggunakan cmdlet Get-ChildItem (gci) dan Measure-Object (measure) terbina dalam.
  • Dalam Go, mengisih koleksi pasangan nilai kunci (peta) mengikut nilai memerlukan beberapa baris kod lebih banyak berbanding dalam bahasa lain, kerana fungsi pengisihan terbina dalam direka bentuk untuk berfungsi dengan tatasusunan/hirisan, bukan peta.
  • Dalam Go, pembundaran nombor titik terapung kepada X tempat perpuluhan dikendalikan semasa mencetak output, menggunakan fungsi fmt.Printf(), berbanding semasa membundarkan nombor, yang, secara kebetulan, boleh dilakukan tanpa menggunakan matematik Fungsi .Round(). Jika anda mempunyai latar belakang C, ini mungkin intuitif. Bagi kami yang lain, ia agak pelik, tetapi berfungsi dengan baik.

Saya mengalihkan pendekatan asal saya dalam Python kepada beberapa bahasa lain, supaya terdapat sekurang-kurangnya satu versi yang harus berfungsi pada setiap tiga sistem pengendalian utama:

  • Mac dan Linux: sepatutnya mempunyai penterjemah python3 dipasang secara lalai. Jika tidak, anda boleh menggunakan versi Go. Sesetengah sistem Linux mungkin mempunyai versi gcc yang dipasang secara lalai yang boleh menyusun Go, tetapi kebanyakan sistem tidak akan melakukannya, jadi anda perlu memuat turun pengkompil Go.
  • Windows: versi PowerShell sepatutnya berfungsi di luar kotak pada sistem dengan Windows 10 atau lebih baru. Untuk sistem yang lebih lama, versi C# mungkin merupakan pilihan yang lebih baik. Anda boleh menggunakan pengkompil C# terbina dalam Windows untuk menyusun kod.

Dan itu sahaja. Satu lagi yak, dicukur. Saya harap anda mendapati ini berguna.

Atas ialah kandungan terperinci Isih Item dalam Direktori mengikut Saiz Menurun Menggunakan Python, PowerShell, C# atau Go. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

<🎜>: Bubble Gum Simulator Infinity - Cara Mendapatkan dan Menggunakan Kekunci Diraja
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Nordhold: Sistem Fusion, dijelaskan
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Mandragora: Whispers of the Witch Tree - Cara Membuka Kunci Cangkuk Bergelut
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Tutorial Java
1672
14
Tutorial PHP
1276
29
Tutorial C#
1256
24
Golang vs Python: Prestasi dan Skala Golang vs Python: Prestasi dan Skala Apr 19, 2025 am 12:18 AM

Golang lebih baik daripada Python dari segi prestasi dan skalabiliti. 1) Ciri-ciri jenis kompilasi Golang dan model konkurensi yang cekap menjadikannya berfungsi dengan baik dalam senario konvensional yang tinggi. 2) Python, sebagai bahasa yang ditafsirkan, melaksanakan perlahan -lahan, tetapi dapat mengoptimumkan prestasi melalui alat seperti Cython.

Golang dan C: Konvensyen vs kelajuan mentah Golang dan C: Konvensyen vs kelajuan mentah Apr 21, 2025 am 12:16 AM

Golang lebih baik daripada C dalam kesesuaian, manakala C lebih baik daripada Golang dalam kelajuan mentah. 1) Golang mencapai kesesuaian yang cekap melalui goroutine dan saluran, yang sesuai untuk mengendalikan sejumlah besar tugas serentak. 2) C Melalui pengoptimuman pengkompil dan perpustakaan standard, ia menyediakan prestasi tinggi yang dekat dengan perkakasan, sesuai untuk aplikasi yang memerlukan pengoptimuman yang melampau.

Bermula dengan Go: Panduan Pemula Bermula dengan Go: Panduan Pemula Apr 26, 2025 am 12:21 AM

GoisidealforbeginnersandSuekableforcloudandnetworkservicesduetoitssimplicity, kecekapan, danconcurrencyfeatures.1) installgofromtheofficialwebsiteandverifywith'goversion'.2)

Golang vs C: Perbandingan Prestasi dan Kelajuan Golang vs C: Perbandingan Prestasi dan Kelajuan Apr 21, 2025 am 12:13 AM

Golang sesuai untuk pembangunan pesat dan senario serentak, dan C sesuai untuk senario di mana prestasi ekstrem dan kawalan peringkat rendah diperlukan. 1) Golang meningkatkan prestasi melalui pengumpulan sampah dan mekanisme konvensional, dan sesuai untuk pembangunan perkhidmatan web yang tinggi. 2) C mencapai prestasi muktamad melalui pengurusan memori manual dan pengoptimuman pengkompil, dan sesuai untuk pembangunan sistem tertanam.

Golang vs Python: Perbezaan dan Persamaan Utama Golang vs Python: Perbezaan dan Persamaan Utama Apr 17, 2025 am 12:15 AM

Golang dan Python masing -masing mempunyai kelebihan mereka sendiri: Golang sesuai untuk prestasi tinggi dan pengaturcaraan serentak, sementara Python sesuai untuk sains data dan pembangunan web. Golang terkenal dengan model keserasiannya dan prestasi yang cekap, sementara Python terkenal dengan sintaks ringkas dan ekosistem perpustakaan yang kaya.

Golang dan C: Perdagangan dalam prestasi Golang dan C: Perdagangan dalam prestasi Apr 17, 2025 am 12:18 AM

Perbezaan prestasi antara Golang dan C terutamanya ditunjukkan dalam pengurusan ingatan, pengoptimuman kompilasi dan kecekapan runtime. 1) Mekanisme pengumpulan sampah Golang adalah mudah tetapi boleh menjejaskan prestasi, 2) Pengurusan memori manual C dan pengoptimuman pengkompil lebih cekap dalam pengkomputeran rekursif.

Perlumbaan Prestasi: Golang vs C Perlumbaan Prestasi: Golang vs C Apr 16, 2025 am 12:07 AM

Golang dan C masing-masing mempunyai kelebihan sendiri dalam pertandingan prestasi: 1) Golang sesuai untuk kesesuaian tinggi dan perkembangan pesat, dan 2) C menyediakan prestasi yang lebih tinggi dan kawalan halus. Pemilihan harus berdasarkan keperluan projek dan tumpukan teknologi pasukan.

Golang vs Python: Kebaikan dan Kekejangan Golang vs Python: Kebaikan dan Kekejangan Apr 21, 2025 am 12:17 AM

Golangisidealforbuildingscalablesystemsduetoitseficiencyandcurrency, whilepythonexcelsinquickscriptinganddataanalysisduetoitssimplicityandvastecosystem.golang'sdesignencouragescouragescouragescouragescourageSlean, readablecodeanditsouragescouragescourscean,

See all articles