GNU ls (yani gömülü olmayan Linux sistemlerindeki ls komutu ve diğer bazı birliklerde de bulunan Cygwin) isimlerini baz alarak bazı dosyaları gizleme seçeneğine sahiptir. Ancak dizinleri görmezden gelmenin bir yolu yok.
ls --hide='t_*' uploads
Başka bir yaklaşım kabuğunuzu eşleştirmeyi sağlamaktır. Bash, ksh ve zsh, eşleşenler !(t_*)
dışındaki tüm dosyaları eşleştirmek için bir olumsuzlama düzenine sahiptir t*
; bash'da bu özelliğin açık olması shopt -s extglob
ve zsh'de de açık olması gerekiyor setopt ksh_glob
. Zsh ^t_*
, açılması gereken eşdeğer bir sözdizimine de sahiptir setopt extended_glob
. Bu hala dizinleri görmezden gelmiyor. Zsh, dosyaları yalnızca ada göre değil aynı zamanda meta veriler ve daha fazlasıyla da eşleştirmenize izin veren ek bir özelliğe sahiptir: glob niteleyicileri . (.)
Düzenli dosyaları kısıtlamak için eşleşmenin sonuna ekleyin . Olumsuzluk ^
, ad eşleştirme sözdiziminin bir parçasıdır, bu ^t_*(.)
nedenle “normal dosyalar eşleşmeyen t_*
tüm dosyalar” değil “ eşleşmeyen tüm normal dosyalar” anlamına gelir t_*
.
setopt extended_glob # put this in your ~/.zshrc
ls uploads/^t_*(.)
Kendinizi gelişmiş araçlar olmadan bulursanız, bunu herhangi bir unix ile yapabilirsiniz find
. Genelde komut satırına yazacağın türden bir şey değil, ama güçlü ve kesin. Caleb, GNU bulgusu ile bunun nasıl yapıldığını çoktan gösterdi . Bu -maxdepth
seçenek taşınabilir değildir; Özyinelemeyi -prune
engellemek için, bunun yerine kullanabilirsiniz find
.
find uploads/* -type d -prune -o \! -type f -name 't_*' -print
Değiştir -print
tarafından -exec ls -lG -- {} +
yürütülecek ls
dosyalar üzerinde favori seçenekleri ile.
Yukarıdaki tüm komutlar nokta dosyalarını gizler (yani adı a ile başlayan dosyalar .
). Eğer onları görüntülemek geçmek istiyorsanız -A
için ls
, ya da eklemek D
zsh glob eleme ( ls uploads/^t_*(.D)
). Bununla find
, yalnızca bir seviye yineleme yapmak için farklı bir yaklaşım kullanabilirsiniz ( find
nokta dosyalarını özel olarak işlemez). Bu, yalnızca find
geçerli dizinde çalıştırıyorsanız tam olarak çalışır .
cd uploads && find . -name . -o -type d -prune -o \! -type f -name 't_*' -print