ls içindeki bazı dosyaları dışla


61

Ls çalıştırmak ve çıktıdaki bazı dosyaları dışlamak istiyorum.

Aşağıdaki komutu çalıştırdığımda, tüm dosyaları tek bir satırda alıyorum:

$ ls -1
file1
file2
file3
temp

Bu komutu bir şekilde çalıştırmak istiyorum

$ ls -1 <insert magic here> temp
file1
file2
file3

Yanıtlar:


82
ls -I <filename>

-I = Dosya adını yoksay, yani belirtilen dosyayı listeleme.

Birden fazla dosyayı yoksaymak için her dosya adından önce bir -I ekleyin .

ls -I file1 -I file2

Dosyaları adlarına göre yok saymak için, örneğin aşağıdakileri yapın.

ls -I "*.jpg" -I "*.svg"

4
Uzun form seçeneğini --ignorekullanırsanız, bunu örneğin glob modellerine genişletmek için genişletebilirsinizls --ignore="file?"ls --ignore="file*"
teeldriver

3
kalıpları alıntılayarak glob kalıplarını da kısa formda kullanabilirsiniz
verboze

18

Benim için bir kere kullanırsam, işe yarar ama iki defa kullanırsam kullanmaz. örneğin: ls -I *.csvçalışır.

Ancak ls -I *.csv -I *.txtçalışmaz ve bunun yerine txt dosyalarını döndürür.

- hileci benim için hile yaptı. İhtiyacım olan ve çalıştığım şey bu.

ls -lhrt --ignore="*.gz" --ignore="*.1"

Bu, dosyaları eski yedekleme günlüklerini dışladığı günlük klasöründen listeler.


3
alıntı * .csv ilk formda çalışır, örn., ls -I '*.txt'. İşaretsiz çalışmamasının nedeni kabuk genişlemesinden kaynaklanıyor, yani kabuğa onları dışlamak yerine tüm csv dosyalarını listelemesini söylüyorsunuz. Aslında olan, genişlemeden sonraki ilk .csv ve .1 dosyalarını görmezden
gelmesidir

Çift alıntı, benim için de çalıştı. Thanks @verboze
user38537 29:16

bu daha kolay. Teşekkürler.
Philippe Delteil

6

ls --ignore={"*.jpg","*.png","*.svg"}


4
Bu sadece üç --ignoreseçenek elde etmek için bash ayraç genişlemesini kullanıyor . Ayrıca kullanabilirsiniz--ignore="*."{jpg,png,svg}
muru

1

Bunun, aradığınız çıktıyı ürettiğini düşünüyorum:

ls -1 !(temp)

Görünüşe göre , shopt -s extglobbunun çalışması için ihtiyacınız
var (Ben etkinleştirdim, bu yüzden sanırım uzak geçmişte biraz zaman yararlı buldum ve etkinleştirdim).

Sanırım çıktıyı filtrelemek için grep kullanabilirsiniz:

ls -1 | grep -v '^temp$'

Bir boru ve filtrelerin kullanılması, daha fazla esneklik ve diğer komutlara / durumlara aktarılabilen beceriler sağlar, ancak bu özel durum için bununla ilgilenmiyor olabilirsiniz.

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.