Kami baru memulai kelas UNIX dan mempelajari berbagai perintah Bash. Penugasan kami melibatkan melakukan berbagai perintah pada direktori yang memiliki sejumlah folder di bawahnya juga.
Saya tahu cara membuat daftar dan menghitung semua file biasa dari folder root menggunakan:
find . -type l | wc -l
Tapi saya ingin tahu ke mana harus pergi dari sana untuk menemukan file terbesar di seluruh direktori. Saya telah melihat sesuatu tentang sebuah du
perintah, tetapi kami belum mempelajarinya, jadi dalam repertoar hal-hal yang telah kami pelajari, saya berasumsi bahwa kami perlu menghubungkannya ke ls -t
perintah.
Dan maafkan saya jika 'istilah' saya tidak benar, saya masih terbiasa!
man
diikuti dengan perintah yang Anda minati. Atas akan muncul entri manual yang bagus untuk perintah itu (tekanq
untuk kembali ke baris perintah).Jawaban:
Mengutip dari ini link-
sumber
'%s %p\n'
dengan'%p\n'
dan menambah|xargs ls -lh
akhirdu -am . | sort -nr | grep '\..*\.' | head
. Inim
untuk menampilkan ukuran file dalam megabyte dan digunakangrep
untuk menunjukkan baris dengan setidaknya dua titik, yang pertama ada di./
jalur, yang kedua di ekstensi file, mis.mov
.Untuk menemukan 25 file teratas di direktori saat ini dan subdirektorinya:
find . -type f -exec ls -al {} \; | sort -nr -k5 | head -n 25
Ini akan menampilkan 25 file teratas dengan mengurutkan berdasarkan ukuran file melalui perintah piped "sort -nr -k5".
Sama tetapi dengan ukuran file yang dapat dibaca manusia:
find . -type f -exec ls -alh {} \; | sort -hr -k5 | head -n 25
sumber
keluaran
Jika Anda hanya ingin nama file:
Ini menghindari penggunaan
awk
dan memungkinkan Anda menggunakan flag apa pun yang Anda inginkanls
.Peringatan . Karena
xargs
mencoba menghindari pembuatan baris perintah yang terlalu panjang, ini mungkin gagal jika Anda menjalankannya di direktori dengan banyak file karenals
akhirnya mengeksekusi lebih dari sekali. Ini bukan masalah yang tidak dapat diatasi (Anda dapat mengumpulkanhead -n 1
output dari setiapls
pemanggilan, dan menjalankannyals -S
lagi, berulang hingga Anda memiliki satu file), tetapi ini agak merusak pendekatan ini.sumber
xargs
, saya telah mengabaikan Anda +1find . -type f -print0 | xargs -0 ls -lS | head -n 1
xargs
telah dieksekusi. Untuk memperbaikinya menambahkan menyortir:find . -type f -print0 | xargs -0 ls -lS | sort -rk 5 | head -n 10
. Bekerja di OSX untuk saya.Tidak ada perintah sederhana yang tersedia untuk mengetahui file / direktori terbesar pada sistem file Linux / UNIX / BSD. Namun, kombinasi dari tiga perintah berikut (menggunakan pipa) Anda dapat dengan mudah mengetahui daftar file terbesar:
Jika Anda ingin lebih banyak keluaran yang dapat dibaca manusia, coba:
Dimana,
sumber
Ini mencantumkan file secara rekursif jika itu file normal, diurutkan berdasarkan bidang ke-7 (yang merupakan ukuran dalam
find
output saya ; periksa milik Anda), dan hanya menampilkan file pertama.Opsi pertama
find
adalah jalur awal untuk pencarian rekursif. Jenisf
pencarian untuk file normal. Perhatikan bahwa jika Anda mencoba mengurai ini sebagai nama file, Anda mungkin gagal jika nama file berisi spasi, baris baru, atau karakter khusus lainnya. Opsi untuksort
juga berbeda menurut sistem operasi. Saya menggunakan FreeBSD.Solusi yang "lebih baik" tetapi lebih kompleks dan lebih berat adalah dengan
find
melintasi direktori, tetapi mungkin menggunakanstat
untuk mendapatkan detail tentang file, kemudian mungkin menggunakanawk
untuk menemukan ukuran terbesar. Perhatikan bahwa keluaranstat
juga tergantung pada sistem operasi Anda.sumber
+7
arg yang dimaksudkan untuk dilakukan? Pada jenis mesin saya hanya mengeluh bahwa tidak dapat menemukan file bernama+7
.sort
di sistem Anda. Saya menggunakan OS X 10.4 saat ini, di mana penggunaannya berasal dari jenis FreeBSD :sort [-cmus] [-t separator] [-o output-file] [-T tempdir] [-bdfiMnr] [+POS1 [-POS2]] [-k POS1[,POS2]] [file...]
... Perhatikan+POS [-POS2]
. Ini juga berfungsi di versi FreeBSD saat ini.-k
arg misalnya.sort -k 7
. edit: oleh OSX 10.5 halaman manual untuk sort tampaknya telah berubah ke versi yang saya miliki.[+POS1] [-POS2]
notasi hanya satu yang lebih tua. Sejauh yang saya tahu, notasi ini masih didukung oleh jenis GNU modern, meskipun sekarang saya lihat, tampaknya telah dihapus dari halaman manual sortir setelah sekitar versi 5.1. Anda dapat melihatnya di halaman manual untuk mengurutkan FreeBSD 4.11 . Saya rasa saya belum membaca halaman manual sort sejak sebelum FreeBSD 5.0 dirilis!+POS1
menghitung parameter sortir dari nol, sedangkan-k POS1
menghitung dari satu.Ini akan menemukan file atau folder terbesar di direktori kerja Anda saat ini:
Untuk menemukan file terbesar di semua sub-direktori:
sumber
ls
. Dalam pengujian saya,-S
bendera akan mencantumkan satu file per baris. Saya telah mengoreksi perintah kedua. Semoga sekarang ini bukti penuh. Terima kasih.Di Solaris saya menggunakan:
atau
karena apa pun yang diposting di sini tidak berfungsi. Ini akan menemukan file
$PWD
dan subdirektori terbesar.sumber
Coba satu baris berikut (tampilkan 20 file terbesar teratas):
atau (ukuran yang dapat dibaca manusia):
Jadi, alias ini berguna untuk dimiliki di file rc Anda :
sumber
Coba perintah berikut:
Ini akan mencetak nama dan ukuran file terbesar dan lebih dari 500M. Anda dapat memindahkan
if($1 > 500000)
, dan itu akan mencetak file terbesar di direktori.sumber
du -aS /PATH/TO/folder | sort -rn | head -2 | tail -1
atau
du -aS /PATH/TO/folder | sort -rn | awk 'NR==2'
sumber
Skrip ini menyederhanakan menemukan file terbesar untuk tindakan lebih lanjut. Saya menyimpannya di direktori ~ / bin saya, dan meletakkan ~ / bin di $ PATH saya.
sumber
Itu cara yang lebih sederhana untuk melakukannya:
Dan Anda akan mendapatkan ini:
8445 examples.desktop
sumber
1***
harus dilakukan di akhir? Saya mendapatkan kesalahan "tidak ditemukan kecocokan" untuk argumen itu.Solusi Linux: Misalnya, Anda ingin melihat semua daftar file / folder dari direktori home (/) Anda menurut ukuran file / folder ( Urutan menurun ).
sudo du -xm / | sort -rn | lebih
sumber
Untuk membuat daftar file yang lebih besar dalam sebuah folder
Output dari
ls -sh
adalah ukurans
danh
tampilan ukuran file yang dapat dimengerti manusia .Anda bisa menggunakan
ls -shS /pathFolder | head -n 1
. Yang lebih besarS
darils
sudah memesan daftar dari file yang lebih besar ke yang lebih kecil tetapi hasil pertama adalah jumlah semua file di folder itu. Jadi jika Anda hanya ingin membuat daftar file yang lebih besar, satu file, Anda perluhead -n 2
dan memeriksa "hasil baris kedua" atau gunakan contoh pertama denganls sort head
.sumber
sumber