Ketika saya menggunakan ls
perintah dengan opsi -l
, string pertama huruf memberikan info tentang setiap file, dan huruf pertama dalam string ini memberikan tipe file. ( d
= direktori, -
= file standar, l
= tautan, dll.)
Bagaimana saya bisa memfilter file sesuai dengan huruf pertama itu?
Jawaban:
Anda dapat memfilter semua kecuali direktori dengan
grep
cara ini:yang
^
menunjukkan bahwa polanya ada di awal baris. Gantid
dengan-
,,l
dll., Sebagaimana berlaku.Anda tentu saja dapat menggunakan perintah lain untuk secara langsung mencari tipe tertentu (misalnya
find . -maxdepth 1 -type d
) atau menggunakanls -l | sort
untuk mengelompokkan tipe yang sama bersama-sama berdasarkan karakter pertama ini, tetapi jika Anda ingin memfilter, Anda harus menggunakangrep
hanya memilih jalur yang sesuai dari output.sumber
ls -lL
.-L
akan mengikuti symlink untuk ditampilkan jika terhubung ke direktori atau file.Jika Anda ingin menampilkan semua output tetapi memiliki file dengan jenis yang sama terdaftar bersama, Anda dapat mengurutkan output pada karakter pertama dari setiap baris:
sumber
Perintah
ls
ini berhubungan dengan nama file , yang dicatat dalam struktur data direktori. Jadi tidak terlalu peduli dengan file itu sendiri, termasuk "tipe" dari suatu file.Perintah yang lebih cocok untuk mengerjakan file yang sebenarnya , bukan hanya namanya saja, adalah
find
. Ini memiliki opsi yang langsung menjawab pertanyaan Anda tentang cara memfilter daftar pada jenis file.Ini memberikan daftar direktori saat ini mirip dengan
ls -l
:Secara default,
find
daftar direktori secara rekursif, yang dinonaktifkan dengan membatasi kedalaman pencarian ke 1.Anda dapat meninggalkan
.
, tapi saya memasukkannya untuk menunjukkan direktori harus didaftar sebelum opsi.Dengan
-type
, Anda dapat memfilter menurut jenis file, yang dinyatakan sebagaif
ataud
untuk file atau direktori biasa:Ada nilai filter lain untuk
-type
, terutamal
untuk tautan simbolik.Perhatikan bahwa ada komplikasi dengan symlink :
Ada dua jenis file dalam kasus ini:,
l
menunjukkan symlink, dan sesuatu sepertif
, menunjukkan jenis file yang ditautkan. Ada opsi untuk menentukan cara menanganinya, sehingga Anda dapat memilih.Dari
man find
:dan relevan dengan penanganan tautan simbolik:
dan
sumber
Jika Anda paling khawatir tentang memesan folder dari jenis file lain, Anda bisa menggunakannya
lain, saya pikir Anda harus menyalurkan output dari ls-l melalui sort atau melalui grep seperti yang dijawab oleh Anthon
sumber
awk akan menangkap semua yang dimulai dengan d. seperti d untuk direktori dan Anda perlu mencetak bidang terakhir untuk mendaftar nama direktori
sumber
Ini akan mengurutkan hasil sesuai dengan urutan abjad dari setiap hasil. Jika karakter pertama adalah kriteria yang Anda inginkan, itu saja. Jika Anda hanya membutuhkan nama file, Anda dapat mencoba:
Atau sesuatu yang serupa (perintah itu menyortir dan kemudian memisahkan setiap baris menggunakan pembatas ruang, lalu mengembalikan kelompok kedua.
sumber