Uzantısı olmayan tüm dosyaları listele


11

Bir dizinde uzantıları olmayan tüm dosyaları listelemek istiyorum.

Örneğin:

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

Bunun yerine hangi komutu kullanabilirim ls -someOption?


Genellikle bir komutun seçeneklerini bilmek istiyorsanız, terminalde "man <komut>" yazarak kılavuz sayfasını okuyun. man manuel (yardım) anlamına gelir. örneğin-man ls
aaditya1234

@AadityaBagga Bu durumda cevap kılavuzda bulunamadı.
wisbucky

Bu senaryoda, .gitignorebir uzantı düşünüyor musunuz?
Amit Naidu

Yanıtlar:


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

Bunu yaptığınızda, çalışma dizinindeki her dizinin içeriğini göstereceğinizi göreceksiniz. Bunu istemiyorsanız, şunu kullanın:

ls -d !(*.*)

Sen koyabilirsiniz shopt -s extglobGözlerinde farklı ~/.bashrcbir terminale açtığınızda aktive olması. Varsayılan Ubuntu'da ~/.bashrcbunu (13.04'te benim için 29. satır) zaten etkinleştirebileceğiniz bir satır (ve globstar) var.

Kabuğun çeşitli globbing seçenekleri hakkında daha fazla bilgi için Greg'in wiki'sine bakın . Bunun lskomut yerine bash kabuğunun bir özelliği olduğunu unutmayın , böylece diğer komutlarla kullanabilirsiniz.

Alternatif olarak,

ls --ignore='*.*'

veya

ls -I '*.*'

... bu bir iç lsseçenektir, ancak extglob herhangi bir keyfi komuta uygulanabilir ve bu yüzden bence daha kullanışlıdır.


1
Sanırım bash olduğu varsayılırsa, hangi kabuktan bahsetmedi. Eğer ksh olsaydı, extglob gerekmez. Varsayılan olarak, sadece:ls !(*.*)
runrig

1
@ runrig Çok haklısınız, ancak OP'nin varsayılan bash kabuğunu kullandığını düşündüğüm sorunun temel niteliği göz önüne alındığında.
evilsoup

10

Hem ls | grep -v \\.ve ls | grep -v "\."eserleri.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.