it-swarm-id.com

Bagaimana cara mendapatkan ukuran direktori di baris perintah?

Saya mencoba untuk mendapatkan ukuran direktori (berisi direktori dan sub direktori) dengan menggunakan perintah ls dengan opsi l. Tampaknya berfungsi untuk file (ls -l file name), tetapi jika saya mencoba untuk mendapatkan ukuran direktori (misalnya, ls -l /home), Saya hanya mendapatkan 4.096 byte, meskipun secara keseluruhan jauh lebih besar.

1142
Abdul Al Hazred

du -sh file_path

Penjelasan

  • du (d isc sage) memperkirakan estimasi penggunaan ruang file_path
  • Opsi-opsi -sh darimana man du):

      -s, --summarize
             display only a total for each argument
    
      -h, --human-readable
             print sizes in human readable format (e.g., 1K 234M 2G)
    

    Untuk memeriksa lebih dari satu direktori dan melihat totalnya, gunakan du -sch:

      -c, --total
             produce a grand total
    
1585
sam

Cukup gunakan perintah du:

du -sh -- *

akan memberi Anda penggunaan disk kumulatif dari semua direktori, file, dll yang tidak disembunyikan dalam direktori saat ini dalam format yang dapat dibaca manusia.

Anda dapat menggunakan perintah df untuk mengetahui ruang kosong di sistem file yang berisi direktori:

df -h .
347
Pacifist

du adalah teman Anda. Jika Anda hanya ingin mengetahui ukuran total dari suatu direktori kemudian lompat ke dalamnya dan jalankan:

du -hs

Jika Anda juga ingin tahu sub-folder mana yang mengambil berapa banyak ruang disk ?! Anda dapat memperluas perintah ini ke:

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

yang akan memberi Anda ukuran semua sub-folder (level 1). Output akan diurutkan (folder terbesar di atas).

212
Chrispie

du dapat menjadi rumit untuk digunakan karena Anda harus melewati 100 argumen untuk mendapatkan hasil yang layak. Dan mencari tahu ukuran folder tersembunyi bahkan lebih sulit.

Jadikan hidup Anda mudah dan gunakan ncdu.

ncdu

Anda mendapatkan ringkasan folder yang mudah dijelajahi.

77
Teque5

Yang lain telah menyebutkan du, tetapi saya juga ingin menyebutkan Ncd - yang merupakan versi ncurses dari du dan menyediakan interaktivitas: Anda dapat menjelajahi hierarki direktori secara langsung dan lihat ukuran subdirektori.

35
Tblue

Perintah du menunjukkan penggunaan disk dari file tersebut.

-h opsi menunjukkan hasil dalam bentuk yang dapat dibaca manusia (mis., 4k, 5M, 3G).

du -h (file name)
28
jackotonye

Semua contoh di atas akan memberi tahu Anda ukuran data pada disk (mis. Jumlah ruang disk yang digunakan file tertentu, yang biasanya lebih besar dari ukuran file sebenarnya). Ada beberapa situasi di mana ini tidak akan memberi Anda laporan yang akurat, jika data tidak benar-benar disimpan pada disk khusus ini dan hanya referensi inode yang ada.

Dalam contoh Anda, Anda telah menggunakan ls-l pada satu file, yang akan mengembalikan ukuran sebenarnya file, BUKAN ukurannya pada disk.

Jika Anda ingin mengetahui ukuran file aktual, tambahkan opsi -b ke du.

du -csbh .
24
Andy Foster

secara pribadi saya pikir ini yang terbaik, jika Anda tidak ingin menggunakan ncdu

# du -sh ./*
17
ConnerMan
df -h .; du -sh -- * | sort -hr

Ini menunjukkan berapa banyak ruang disk yang tersisa di drive saat ini dan kemudian memberi tahu Anda berapa banyak setiap file/direktori memakan. misalnya.,

Filesystem      Size  Used Avail Use% Mounted on
/dev/sdb2       206G  167G   29G  86% /
115M    node_modules
2.1M    examples
68K     src
4.0K    webpack.config.js
4.0K    README.md
4.0K    package.json
16
mpen

I gunakan perintah ini sebagai root :

Sudo ls -1d */ | Sudo xargs -I{} du {} -sh && Sudo du -sh
10

temukan semua file di bawah direktori saat ini secara rekursif dan jumlahkan ukurannya:

find -type f -print0 | xargs -0 stat --print='%s\n' | awk '{total+=$1} END {print total}'
10
Leon Chang

Ini adalah fungsi untuk .bash_aliases Anda

# du with mount exclude and sort
function dusort () {
    DIR=$(echo $1 | sed 's#\/$##')
    du -scxh $(mount | awk '{print $3}' | sort | uniq \
     | sed 's#/# --  exclude=/#') $DIR/* | sort -h
}

output sampel:

$ dusort /
...
0       /mnt  
0       /sbin
0       /srv
4,0K    /tmp
728K    /home
23M     /etc
169M    /boot  
528M    /root
1,4G    /usr
3,3G    /var
4,3G    /opt
9,6G    total

untuk subdirs:

$ dusort .
$ dusort /var/log/
10
feldversuch

Satu lagi varian:

du -h --max-dep=1
9
0x8BADF00D

Berikut ini skrip POSIX yang akan bekerja dengan:

  • File
  • File
  • Direktori
  • Direktori
ls -A -R -g -o "[email protected]" | awk '{n1 += $3} END {print n1}'
7
Steven Penny

Perhatikan bahwa du mencetak ruang yang ditempati direktori pada media yang biasanya lebih besar dari sekadar ukuran total semua file dalam direktori, karena du memperhitungkan ukuran semua informasi tambahan yang disimpan di media untuk mengatur direktori sesuai dengan format sistem file.

Jika sistem file dapat dikompresi, maka du dapat menghasilkan jumlah yang lebih kecil dari ukuran total semua file, karena file mungkin secara internal dikompresi oleh sistem file dan sehingga mereka mengambil lebih sedikit ruang pada media daripada hanya informasi yang tidak terkompresi. mengandung. Sama jika ada file yang jarang.

jika ada tautan keras di direktori, maka du dapat mencetak nilai yang lebih kecil juga karena beberapa file berbeda dalam direktori merujuk data yang sama pada media.

Untuk mendapatkan ukuran total langsung dari semua file dalam direktori, ekspresi Shell satu baris berikut dapat digunakan (dengan asumsi sistem GNU):

find . ! -type d -print0 | xargs -r0 stat -c %s | paste -sd+ - | bc

atau bahkan lebih pendek:

find . ! -type d -printf '%s\n' | paste -sd+ - | bc

Itu hanya menjumlahkan ukuran semua file non-direktori dalam direktori (dan subdirektori secara rekursif) satu per satu. Perhatikan bahwa untuk symlink, ia melaporkan ukuran symlink (bukan file yang ditunjuk symlink).

6
anton_rh

Kamu bisa menggunakan

du -sh directory/

dan

du -sh filename

untuk mengetahui ruang yang ditempati oleh folder atau file.

df -h

akan menunjukkan penggunaan disk dalam format yang dapat dibaca manusia -h melakukannya.

Ada juga program berbasis gui bernama Disk Usage Analyzer.

6
arupgsh