Daftar semua file yang tidak memiliki ekstensi

11

Saya ingin mendaftar semua file dalam direktori yang tidak memiliki ekstensi.

Sebagai contoh:

$ ls
a.txt    b      c.pdf     d     e.png
$ ls -someOption
b       d

Perintah apa yang bisa saya gunakan, bukan ls -someOption?

NewMrd
sumber
Biasanya jika Anda ingin mengetahui opsi untuk suatu perintah, bacalah halaman manualnya dengan mengetikkan "man <command>" di terminal. man singkatan manual (help)
.misalnya-
@AadityaBagga Dalam hal ini, jawabannya tidak ditemukan dalam manual.
wisbucky
Dalam skenario ini, apakah Anda mempertimbangkan .gitignoreekstensi?
Amit Naidu

Jawaban:

14
shopt -s extglob ## enables extended globbing
ls !(*.*) ## matches every file except those containing a dot

Anda akan menemukan bahwa melakukan hal ini akan menunjukkan kepada Anda isi dari setiap direktori di direktori kerja. Jika Anda tidak menginginkan ini, gunakan:

ls -d !(*.*)

Anda dapat menempatkan shopt -s extglobdalam Anda ~/.bashrcuntuk memilikinya diaktifkan setiap kali Anda membuka terminal. Sudah ada baris di Ubuntu default ~/.bashrc(baris 29 untuk saya pada 13,04) yang dapat Anda batalkan komentar untuk mengaktifkan ini (dan globstar).

Lihat wiki Greg untuk informasi lebih lanjut tentang berbagai opsi penggumpalan shell. Perhatikan bahwa ini adalah properti dari bash shell daripada lsperintah, sehingga Anda dapat menggunakannya dengan perintah lain.

Atau, Anda dapat menggunakan

ls --ignore='*.*'

atau

ls -I '*.*'

... yang merupakan lsopsi internal , tetapi extglob dapat diterapkan pada perintah sembarang & jadi lebih berguna menurut saya.

Evilsoup
sumber
1
OP tidak menyebutkan shell mana, meskipun saya kira bash diasumsikan. Jika ksh, tidak perlu extglob. Secara default, cukup:ls !(*.*)
runrig
1
@ runrig Anda cukup benar, tetapi mengingat sifat dasar dari pertanyaan, saya berasumsi OP menggunakan bash shell default.
evilsoup
10

Keduanya ls | grep -v \\.dan ls | grep -v "\."bekerja.

Krowe
sumber