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.