Saya perlu menemukan file terbesar di folder.
Bagaimana cara memindai folder secara rekursif dan mengurutkan isinya berdasarkan ukuran?
Saya sudah mencoba menggunakan ls -R -S
, tetapi ini mencantumkan direktori juga.
Saya juga mencoba menggunakan find
.
command-line
find
ls
pengguna2179293
sumber
sumber
Jawaban:
Anda juga dapat melakukan ini dengan adil
du
. Agar aman, saya menggunakan versidu
:Pendekatan:
Kerusakan pendekatan
Perintah
du -ah DIR
akan menghasilkan daftar semua file dan direktori dalam direktori yang diberikanDIR
. The-h
akan menghasilkan ukuran yang dapat dibaca manusia yang saya suka. Jika Anda tidak menginginkannya, jatuhkan saklar itu. Saya menggunakanhead -6
hanya untuk membatasi jumlah output!Cukup mudah untuk mengurutkannya dari yang terkecil hingga yang terbesar:
Balikkan, terbesar ke terkecil:
Jangan perlihatkan padaku direktori, hanya file:
Jika Anda hanya ingin daftar file terkecil hingga terbesar, tetapi 6 file teratas yang menyinggung Anda dapat membalikkan pengalih sortir, drop (
-r
), dan gunakantail -6
sebagai gantihead -6
.sumber
grep -v "/$"
tampaknya tidak melakukan apa yang Anda harapkan, karena direktori tidak memiliki garis miring ditambahkan. Adakah yang tahu cara mengecualikan direktori dari hasil?/
s baik - misalnya/home/saml/Downloads/audible
tampaknya menjadi direktori, tetapi tidak memiliki garis miring. Hanya/home/saml/Downloads/
memiliki garis miring, tetapi itu mungkin karena Anda menulisnya dengan garis miring ketika menentukan argumen untuk inisialdu
.Jika Anda ingin menemukan semua file di direktori saat ini dan sub direktori dan daftar mereka sesuai dengan ukurannya (tanpa mempertimbangkan jalurnya), dan dengan asumsi tidak ada nama file yang mengandung karakter baris baru, dengan GNU
find
, Anda dapat melakukan ini:Dari
man find
pada sistem GNU:Dari
man sort
:sumber
Coba perintah berikut:
Itu akan daftar top-20 file terbesar di direktori saat ini secara rekursif.
Catatan: Opsi
-h
untuksort
tidak tersedia di OSX / BSD, jadi Anda harus menginstalsort
daricoreutils
(misalnya melaluibrew
) dan menerapkan jalur bin lokal kePATH
, misalnyaAtau gunakan:
Untuk penggunaan direktori terbesar
du
, misalnya:atau:
sumber
Ini akan menemukan semua file secara rekursif, dan mengurutkannya berdasarkan ukuran. Ini mencetak semua ukuran file dalam kb, dan membulatkannya sehingga Anda dapat melihat 0 KB file, tapi itu cukup dekat untuk saya gunakan, dan bekerja pada OSX.
find . -type f -print0 | xargs -0 ls -la | awk '{print int($5/1000) " KB\t" $9}' | sort -n -r -k1
sumber
find . -type f
menemukan file ... ini bekerja secara rekursif, Anda benar, tetapi daftar semua file yang ditemukannya, bukan direktori itu sendiriDengan
zsh
, Anda akan menemukan file terbesar (dalam hal ukuran yang tampak seperti kolom ukuran dalamls -l
output, bukan penggunaan disk) dengan:Untuk 6 yang terbesar:
Untuk mengurutkan mereka berdasarkan ukuran file, Anda dapat menggunakan
ls
's-S
pilihan. Beberapals
implementasi juga memiliki-U
opsi untukls
tidak mengurutkan daftar (karena sudah diurutkan berdasarkan ukuran dizsh
sini).sumber
Solusi sederhana untuk Mac / Linux yang melewatkan direktori:
sumber
Setara di
BSD
atauOSX
adalahsumber
Ini adalah kebutuhan yang sangat umum untuk berbagai alasan (saya suka menemukan cadangan terbaru dalam direktori), dan merupakan tugas yang sangat sederhana.
Saya akan memberikan solusi Linux yang menggunakan utilitas find, xargs, stat, tail, awk, dan sortir.
Kebanyakan orang telah memberikan beberapa jawaban unik, tetapi saya lebih suka jawaban saya karena itu benar menangani nama file, dan use case dapat dengan mudah diubah (ubah stat, dan urutkan argumen)
Saya juga akan memberikan solusi Python yang seharusnya memungkinkan Anda menggunakan fungsi ini bahkan di Windows
Solusi baris perintah Linux
Secara rekursif mengembalikan seluruh daftar hanya file dari direktori, diurutkan berdasarkan ukuran file
Sama seperti sebelumnya, tapi kali ini, kembalikan file terbesar.
Pola persis sama, tetapi sekarang pilih file terbaru, bukan terbesar
Penjelasan:
Solusi python
Skrip ini membutuhkan waktu agak lama untuk dijelaskan, tetapi pada dasarnya jika Anda menyimpannya sebagai skrip, skrip ini akan mencari argumen pertama yang disediakan pada baris perintah, dan mengembalikan file terbesar di direktori itu. Script tidak memeriksa kesalahan, tetapi harus memberi Anda ide tentang cara mendekati ini dengan Python, yang memberi Anda cara independen platform bagus untuk menyelesaikan masalah ini.
sumber
Varian dari jawaban ini dari pertanyaan serupa
sumber
Coba perintah di bawah ini dengan opsi sortir untuk memiliki folder dengan ukuran dalam urutan menaik
du -sh * | sort -sh
sumber
Sesuatu yang berfungsi pada platform apa pun kecuali AIX dan HP-UX adalah:
sumber