GNU/Linux >> Belajar Linux >  >> Linux

Dapatkan semua ekstensi dan jumlah file masing-masing dalam direktori

Solusi 1:

/var/cache$ sudo find ./ -type f | grep -E ".*\.[a-zA-Z0-9]*$" | sed -e 's/.*\(\.[a-zA-Z0-9]*\)$/\1/' | sort | uniq -c | sort -n
      1 .6
      1 .cache
      1 .noconf
      1 .php
      1 .sl
      2 .bin
      2 .el
      2 .tdb
      4 .baseA
      4 .baseB
      4 .dat
      4 .DB
     27 .db
    221 .deb

Berikut penjelasannya:

find ./ -type f

temukan hanya file, bukan direktori

grep -E ".*\.[a-zA-Z0-9]*$"

filter file dengan ekstensi

sed -e 's/.*\(\.[a-zA-Z0-9]*\)$/\1/'

hapus jalur dan nama file, simpan hanya ekstensi

sort | uniq -c | sort -n

urutkan, uniq dan urutkan

Solusi 2:

Karena Anda menggunakan Linux (gnu grep), inilah saat yang tepat untuk menggunakan Perl REs (PCRE) -P dan -o grep pilihan. Mengambil jawaban @bindbn sebagai kandidat hebat:

find . -type f | grep -Po '\.([\w\d])*$' | sort | uniq -c | sort -n

Linux
  1. Menampilkan daftar semua pekerjaan 'at' dan perintahnya masing-masing

  2. `^m` Dan Bagaimana Cara Menghilangkannya?

  3. Urutkan Dan Hitung Jumlah Terjadinya Garis?

  1. Hapus File Dan Direktori Dengan Nama Mereka. Tidak ada berkas atau direktori seperti itu?

  2. Dapatkan file terbaru di direktori di Linux

  3. Bagaimana cara mendaftar ukuran setiap file dan direktori dan mengurutkan berdasarkan ukuran menurun di Bash?

  1. Konversikan semua ekstensi file menjadi huruf kecil

  2. Bagaimana cara mendapatkan direktori absolut dari sebuah file di bash?

  3. Unrar semua file dalam direktori tanpa diminta