Saya tidak tahu apakah ls
mampu menampilkan kolom tipe file.
Melakukan pencarian online cepat dan pencarian man
tidak mengungkapkan kemampuan seperti itu. Apakah ia mampu melakukan ini?
Klarifikasi: Ini sangat membantu jika file tidak memiliki ekstensi.
Memperbarui
Pada 2018-04-28 jawabannya sudah cukup menarik namun mereka tidak memberikan apa yang saya cari. Lebih spesifik,
file
memang memberikan tipe file yang sebenarnya tetapi tidak terintegrasi dengan baikls
. Secara khusus, saya gunakanls -lhtrpG --group-directories-first --color=always
ls -F
adalahls
solusi namun menyediakan simbol bukan kolom dari tipe file yang sebenarnya.
Untuk alasan ini saya belum menandai jawaban mana pun sebagai jawaban yang saya cari.
command-line
ls
pengguna10853
sumber
sumber
ls -lahtrpF --group-directories-first --color=always /dev
atauls -lsahG /dev
, dan untuk dibaca programls -lsa /dev
. lihatman ls
dokumentasi untuk detailnya.Jawaban:
file
jelas merupakan pilihan yang tepat untuk mendapatkan informasi jenis file yang Anda inginkan. Untuk menggabungkan hasilnya dengan yangls
saya sarankan untuk digunakanfind
:Ini menemukan setiap file di direktori saat ini dan mencetak output
ls -dils
serta outputfile -b
untuk itu, masing-masing pada baris sendiri. Contoh output:Namun, karena Anda tidak menginginkan baris filetype melainkan kolom filetype , berikut ini cara untuk menghilangkan karakter baris baru di antara baris-baris tersebut:
Output sampel:
Kolom baru itu cukup panjang, jadi mari kita potong semuanya dari koma pertama:
Output yang terlihat seperti ini:
Ini tidak cukup berguna, jadi bagaimana dengan
alias
? Dengan baris berikut dalam~/.bash_aliases
file Anda, Anda hanya perlu menjalankanlsf
untuk mendapatkan output di atas untuk direktori saat ini.sumber
paste
ataucolumn
, Anda bisa mendapatkan perataan yang lebih baik:lsf () { find -maxdepth 1 -type f -exec bash -c 'column <(ls -l "$@") <(file -b "$@" | cut -d, -f1)' _ {} + ; }
Masalah perataan tidak jelas dalam jawaban karena ukuran dan tanggal yang sama. (Ini juga akan sedikit lebih cepat, karena perintah akan dipanggil lebih sedikit kali daripada sekali per file.)column
pendekatan ini bekerja untuk Anda? Itu hanya mencetak outputls -l
untuk setiap file diikuti olehfile
output untuk setiap file untuk saya, seolah-olah shell hanya akan melakukanls -l "$@"; file -b "$@" | cut -d, -f1
.../etc
.column
output tidak ke terminal, Anda perlu menentukan jumlah kolom atau akan menampilkan file satu demi satu; jadicolumn -c "$COLUMNS" ...
harus bekerja dalam kedua kasus.Saya pikir cara terbaik untuk menampilkan jenis file menggunakan perintah ini:
Jika Anda ingin membuat daftar jenis semua file dalam direktori, cukup gunakan:
Untuk detail lebih lanjut tentang argumen, lihat:
sumber
mime type
saja, penggunaan:file --mime-type filename
.file
cukup baik, tetapi pertanyaan ini berbeda.file
jawaban. Ketika saya menjawab yang lain ini tidak cukup (perlu diintegrasikan dengan ls) jadi saya tetap memberikan suara. Terima kasih.file --mime /dev/*
untuk daftar mimes dalam direktori / dev, bukan saat iniUntuk kejelasan, saya akan menunjukkan bahwa Anda dapat melihat jenis file dalam arti dasar dengan
ls
, menggunakan-F
flag (mengklasifikasikan) yang menambahkan simbol ke nama file tergantung pada jenisnya:Anda dapat melihat bahwa informasi sedikit kurang cryptically ditampilkan dalam huruf pertama dari keluaran
ls -l
, meskipun. Jawaban wjandrea menjelaskan hal ini lebih terinci.Tapi saya tidak berpikir ini yang Anda maksud dengan tipe file. The
ls
perintah tidak terlihat file dalam biasa - hanya pada daftar direktori (yang menyimpan nama file) dan inodes (yang menyimpan metadata, termasuk "tipe" dalam arti yang disebutkan sebelumnya).Jadi,
ls
perintah tidak dapat menampilkan jenis file dalam arti apakah itu gambar JPG atau file biner atau file teks atau dokumen LibreOffice dari beberapa jenis, karena tidak memiliki informasi itu.Untuk itu, seperti yang ditunjukkan oleh singrium , Anda memerlukan
file
perintah, yang melihat 50-100 kB pertama atau lebih dari konten file untuk menentukan jenisnya.sumber
Salah satu bentuk tipe file adalah apakah file adalah file biasa, direktori, perangkat, symlink, dll.
ls
Dapat menunjukkan ini menggunakan opsi-l
atau-F
.Opsi
-l
akan menampilkan filetype sebagai karakter tunggal pada awal daftar, misalnya:Di mana
-
file biasa,d
adalah direktori, danl
merupakan symlink.Opsi
-F
akan menampilkan filetype sebagai akhiran, misalnya:Di mana tidak ada akhiran adalah file biasa,
/
adalah direktori, dan@
merupakan symlink.Info lebih lanjut tentang ini tersedia di
info coreutils 'ls invocation'
, disimpulkan di sini:Untuk
-l
:Untuk
-F
:sumber