GNU ls (т. Е. Команда ls в не встроенных системах Linux и Cygwin, также доступная в некоторых других приложениях) имеет возможность скрыть некоторые файлы, основываясь на их именах. Там нет способа игнорировать каталоги, хотя.
ls --hide='t_*' uploads
Другой подход - сделать так, чтобы ваша оболочка соответствовала. Bash, ksh и zsh имеют шаблон отрицания !(t_*)для соответствия всем файлам, кроме соответствующих t*; в bash эту функцию нужно включить с помощью shopt -s extglob, а в zsh - с setopt ksh_glob. Zsh также имеет эквивалентный синтаксис, ^t_*который необходимо включить setopt extended_glob. Это все еще не игнорирует каталоги. В Zsh есть дополнительная функция, которая позволяет сопоставлять файлы не только по имени, но и по метаданным и многим другим: квалификаторы glob . Добавить (.)в конце матча, чтобы ограничить обычные файлы. Отрицание ^является частью синтаксиса сопоставления имен, поэтому ^t_*(.)означает «все обычные файлы не совпадают t_*», а не «все файлы, которые не сопоставляются обычным файлам t_*».
setopt extended_glob # put this in your ~/.zshrc
ls uploads/^t_*(.)
Если вы оказались без продвинутых инструментов, вы можете сделать это на любом Unix с find. Это не та вещь, которую вы обычно печатаете в командной строке, но она мощная и точная. Калеб уже показал, как это сделать с помощью GNU find . -maxdepthВариант не является переносимым; Вы можете использовать -pruneвместо этого, чтобы остановить findпереставая.
find uploads/* -type d -prune -o \! -type f -name 't_*' -print
Замените -printна, -exec ls -lG -- {} +чтобы выполнить lsваши любимые параметры файлов.
Все команды выше скрывают точечные файлы (то есть файлы, чье имя начинается с a .). Если вы хотите отобразить их, перейдите -Aк lsили добавьте Dквалификатор glob в zsh ( ls uploads/^t_*(.D)). С помощью findвы можете использовать другой подход, заставляя его повторять только один уровень (специально findне обрабатывает точечные файлы). Это полностью работает, только если вы работаете findв текущем каталоге.
cd uploads && find . -name . -o -type d -prune -o \! -type f -name 't_*' -print