GNU ls (tj. Polecenie ls w niewbudowanych systemach Linux i Cygwin, dostępne również w niektórych innych systemach unikatowych) ma opcję ukrywania niektórych plików na podstawie ich nazw. Nie można jednak zignorować katalogów.
ls --hide='t_*' uploads
Innym podejściem jest sprawienie, aby powłoka dopasowała się. Bash, ksh i zsh mają wzorzec negacji !(t_*)pasujący do wszystkich plików oprócz pasujących t*; w bash ta funkcja musi być włączona za pomocą shopt -s extglob, aw zsh musi być włączona za pomocą setopt ksh_glob. Zsh ma również równoważną składnię, ^t_*którą należy włączyć setopt extended_glob. To nadal nie ignoruje katalogów. Zsh ma dodatkową funkcję, która pozwala dopasowywać pliki nie tylko według nazwy, ale także według metadanych i innych: kwalifikatorów glob . Dodaj (.)na końcu dopasowania, aby ograniczyć się do zwykłych plików. Negacja ^jest częścią składni dopasowania nazwy, więc ^t_*(.)oznacza „wszystkie zwykłe pliki nie pasują t_*”, a nie „wszystkie pliki, które nie są zwykłymi plikami pasujące t_*”.
setopt extended_glob # put this in your ~/.zshrc
ls uploads/^t_*(.)
Jeśli znajdziesz się bez zaawansowanych narzędzi, możesz to zrobić na dowolnym Uniksie find. To nie jest coś, co zwykle wpisujesz w wierszu poleceń, ale jest mocne i precyzyjne. Caleb już pokazał, jak to zrobić za pomocą GNU find . Ta -maxdepthopcja nie jest przenośna; -prunezamiast tego możesz użyć , aby przenośnie przestać się findpowtarzać.
find uploads/* -type d -prune -o \! -type f -name 't_*' -print
Zamień -printna, -exec ls -lG -- {} +aby wykonać lsz ulubionymi opcjami plików.
Wszystkie powyższe polecenia ukrywają pliki kropkowe (tzn. Pliki, których nazwa zaczyna się na a .). Jeśli chcesz je wyświetlić, należy przekazać -Ado lslub dodać Dkwalifikator glob w zsh ( ls uploads/^t_*(.D)). Za pomocą findmożna zastosować inne podejście, aby rekursja była powtarzana tylko o jeden poziom ( findnie traktuje specjalnie plików kropek). Działa to findw pełni tylko wtedy, gdy uruchomisz w bieżącym katalogu.
cd uploads && find . -name . -o -type d -prune -o \! -type f -name 't_*' -print