Katakanlah saya ingin mendapatkan ukuran setiap direktori sistem file Linux. Ketika saya menggunakan ls -la
saya tidak benar-benar mendapatkan ukuran folder yang diringkas.
Jika saya menggunakan df
saya mendapatkan ukuran masing-masing sistem file yang dipasang tetapi itu juga tidak membantu saya. Dan dengan du
saya mendapatkan ukuran setiap subdirektori dan ringkasan dari keseluruhan sistem file.
Tetapi saya hanya ingin memiliki ukuran yang diringkas dari setiap direktori dalam folder ROOT dari sistem file. Apakah ada perintah untuk mencapainya?
--total
bendera membantu bagi saya. Misalnyadu -sh --total applications/*
. askubuntu.com/a/465436/48214Jawaban:
Ini melakukan apa yang Anda cari:
Apa artinya ini:
-s
untuk memberikan total untuk setiap argumen baris perintah.-h
untuk sufiks yang dapat dibaca manusia sepertiM
untuk megabita danG
untuk gigabita (opsional)./*
cukup memperluas ke semua direktori (dan file) di/
.Catatan: dotfiles tidak termasuk; lari
shopt -s dotglob
untuk memasukkan itu juga.Juga berguna adalah menyortir berdasarkan ukuran:
Sini:
-h
memastikan bahwasort
menafsirkan sufiks yang dapat dibaca manusia dengan benar.sumber
shopt -s dotglob
untuk memasukkannya dalam hitungan./*
, misalnya./
untuk direktori saat ini atau./*
untuk setiap item dalam direktori saat ini../*/
untuk mendapatkan hanya subfolder dan tidak semua itemdu -sh /* | sort -h
sort
tidak memilikinya-h
, Anda harus mematikannyadu
juga, jika tidak pengurutan akan mencampur kilo / mega / gigabytes.du -s /* | sort -nr
.Saya sering perlu menemukan direktori terbesar, jadi untuk mendapatkan daftar yang diurutkan berisi 20 dir terbesar saya melakukan ini:
Dalam hal ini ukurannya akan dilaporkan dalam megabyte.
sumber
Saya suka menggunakan Ncdu untuk itu, Anda dapat menggunakan kursor untuk menavigasi dan menelusuri struktur direktori yang berfungsi dengan sangat baik.
sumber
b
untuk menjatuhkan shell di direktori.Jawaban yang ada sangat membantu, mungkin beberapa pemula (seperti saya) akan menganggap ini bermanfaat juga.
Loop yang sangat mendasar, tetapi bagi saya ini adalah awal yang baik untuk beberapa operasi terkait ukuran lainnya:
Sangat mirip dengan jawaban pertama dan hasil yang hampir sama dengan 1.), tetapi butuh beberapa waktu untuk memahami perbedaan * menjadi ./* jika dalam subdirektori:
sumber
for each
tidak berfungsi karena menambahkan karakter konsol (misalnya\033[
) ke daftar folderfor each
. itu tidak akan berfungsidu
Doa berikut harus bekerja pada sistem BSD:sumber
du
(Ubuntu 10.4) tidak memiliki-d
opsi. Sistem apa yang Anda pakai?du -sk /*
. Aku sangat membenci-k
barang itu. Linux-h
benar - benar batu.--max-depth
Ini tidak mudah. The
du
perintah baik menunjukkan file dan folder (default) atau hanya ukuran semua item yang Anda tentukan pada baris perintah (option-s
).Untuk mendapatkan item terbesar (file dan folder), diurutkan, dengan ukuran yang dapat dibaca manusia di Linux:
Ini akan mengubur Anda dalam banyak file kecil. Anda dapat menghilangkannya dengan
--threshold
(1 MB dalam contoh saya):Keuntungan dari perintah ini adalah bahwa ia termasuk folder titik tersembunyi (folder yang dimulai dengan
.
).Jika Anda benar-benar hanya menginginkan folder, Anda harus menggunakan
find
tetapi ini bisa sangat, sangat lambat karenadu
harus memindai banyak folder beberapa kali:sumber
Perlu diketahui, bahwa Anda tidak dapat membandingkan direktori dengan
du
pada sistem / mesin yang berbeda tanpa memastikan, keduanya berbagi ukuran blok yang sama dari sistem file. Ini mungkin diperhitungkan jika Anda rsync beberapa file dari mesin linux ke nas dan Anda ingin membandingkan direktori yang disinkronkan pada Anda sendiri. Anda mungkin mendapatkan hasil yang berbeda dengandu
karena ukuran blok yang berbeda ....sumber
Anda mungkin juga ingin memeriksa xdiskusage . Akan memberi Anda informasi yang sama, tetapi ditampilkan secara grafis, plus memungkinkan untuk menelusuri (sangat berguna). Ada utilitas serupa lainnya untuk KDE dan bahkan Windows.
sumber
Anda bisa menggunakannya
ls
bersamaan denganawk
:Output dari
ls
disalurkan keawk
.awk
mulai memproses data. Pembatas standar adalah ruang. Variabel penjumlahantot
diinisialisasi ke nol; pernyataan berikut dijalankan untuk setiap baris / baris yang dikeluarkan olehls
. Itu hanya bertambahtot
dengan ukuran.$5
singkatan kolom kelima (dihasilkan olehls
). Pada akhirnya kami membagi dengan (1024 * 1024) untuk menjumlahkan dalam megabyte.Jika Anda akan mengonversinya menjadi skrip atau fungsi (.bashrc), Anda juga dapat menggunakannya untuk mendapatkan ukuran subset direktori tertentu, sesuai dengan tipe file.
Jika Anda menginginkan informasi sistem yang luas,
kdirstat
semoga bermanfaat!sumber