Meskipun od -cmemang akan menampilkan konten file, itu bukan cara yang baik untuk mendapatkan jenis file. Sementara beberapa file akan berisi header dengan tipe file, tidak semua akan. Cara yang lebih baik adalah perintah file:
$ echo "hello" > foo.txt
$ file foo.txt
foo.txt: ASCII text
Jadi, untuk mendapatkan daftar semua jenis file dalam direktori, Anda dapat melakukan:
for file in dir/*; do file "$file" | cut -d: -f 2; done | sort -u
Contoh output:
PNG image data, 1500 x 500, 8-bit/color RGBA, non-interlaced
ASCII text
directory
GIF image data, version 89a, 22 x 22
ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, BuildID[sha1]=becf821e4d814fdb69306d0b3f686eb06992f5e5, stripped
Penjelasan
for file in dir/*; do ... done;: iterate through everything in dir( dirhanya sebuah contoh, Anda harus mengubahnya ke nama direktori aktual yang ingin Anda cari), menyimpan setiap item pada gilirannya sebagai$file
file "$file": jalankan filedi setiap item yang ditemukan.
cut -d: -f 2: hanya cetak bidang kedua (bidang yang ditentukan oleh :)
sed 's/^ //; s/ +/ /g' : hapus spasi dari awal baris dan konversi spasi berurutan menjadi satu ruang.
sort -u : hapus jenis file duplikat