Cara menghitung jumlah file dalam suatu direktori tetapi tidak secara rekursif

30

Pertanyaan sederhana, saya yakin. Saya telah melihat jawaban yang menunjukkan bagaimana melakukannya termasuk subdirektori, tetapi saya ingin tahu berapa banyak file (bukan folder) yang ada di direktori saat ini saja. Terima kasih.

bcsteeve
sumber

Jawaban:

60
ls -F |grep -v / | wc -l
  1. ls -F daftar semua file dan tambahkan indikator (salah satu dari * / => @ |) ke entri
  2. grep -v /simpan semua string yang tidak mengandung garis miring
  3. wc -l menghitung garis
mereka
sumber
Daftar semuanya kecuali direktori.
thom
Saya sangat menghargai Anda memecahkannya dan menjelaskan bagian-bagiannya, terima kasih atas jawaban yang berhasil dan dijelaskan dengan baik!
bcsteeve
1
Sementara semua jawaban menyelesaikan masalah saya, saya memilih yang ini sebagai yang terdokumentasi dan termudah untuk saya pahami. Tapi terima kasih untuk semuanya!
bcsteeve
15

Coba oneliner ini:

find -maxdepth 1 -type f | wc -l
amc
sumber
Ini bagus, hanya file dan tidak ada yang lain :-)
thom
Ini melompati tautan dan perangkat karakter khusus.
ojblass
Semua jawaban di sini berfungsi dengan baik! Jadi pertama, TERIMA KASIH. Kedua ... bagaimana saya memilih?
bcsteeve
6

Coba ini

ls -al | grep ^[-] | wc -l
  1. ls -al - daftar semua file dengan format daftar panjang
  2. grep ^[-] - mencari string yang dimulai dengan "-" yang merupakan simbol untuk menunjukkan file biasa ketika daftar file dengan ls -al
  3. wc -l - menghitung garis
andr3w
sumber
Bagaimana dengan tautan lunak? Bagaimana dengan file yang ditautkan?
Bagus, hanya file dan tautan, tidak ada yang lain.
thom
Untuk tautan tautan lunak / keras diganti -denganl
andr3w
Saya sangat menghargai Anda memecahkannya dan menjelaskan bagian-bagiannya, terima kasih atas jawaban yang berhasil dan dijelaskan dengan baik!
bcsteeve
2

Saya hanya ingin menambahkan jawaban mereka karena saya suka bermain dengan Bash . Ini dia:

echo "Directory $(pwd) has $(ls -F |grep -v / | wc -l) files"

Di bawah ini adalah contoh hasil /datadirektori saya :

Directory /data has 580569 file(s).

Dan di bawah ini penjelasan saya:

  1. echo double-quoted-message akan mencetak pesan yang diinginkan.
  2. $(any-desirable-valid-command)di dalam pesan yang dikutip ganda dari suatu echoakan mencetak hasil dari eksekusi perintah terkait.
  3. pwd akan mencetak direktori saat ini.
  4. ls -Fadalah untuk mendaftarkan semua file dan menambahkan indikator (salah satu dari * / => @ |) ke entri. Saya menyalin ini dari jawaban mereka .
  5. grep -v /adalah perintah untuk mencari teks biasa, -v /parameter akan menyimpan semua string yang tidak mengandung slash (es).
  6. wc -l akan mencetak penghitungan baris.

Saya tahu pertanyaan ini berumur 3 tahun, saya tidak bisa menahan keinginan saya untuk menambahkan jawaban lain.

Aditya Kresna
sumber
2

Jika Anda telah treemenginstal pada sistem Anda, Anda dapat menggunakan perintah ini:

tree -L 1 /path/to/your/directory | tail -n 1

Ini menunjukkan kepada Anda jumlah file dan direktori dalam direktori itu.

-L n menunjukkan kedalaman pencarian.

Anda dapat menginstal treedengan sudo apt-get install tree.

MOHRE
sumber
-3

Untuk menghitung jumlah total file dengan ekstensi spesifik Anda dapat mengetik:

ls|grep jpg |wc -l
Alexander Chip
sumber