O GNU ls (ou seja, o comando ls em sistemas Linux não incorporados e o Cygwin, também disponível em outros órgãos) tem uma opção para ocultar alguns arquivos, com base em seus nomes. Porém, não há como ignorar diretórios.
ls --hide='t_*' uploads
Outra abordagem é fazer com que seu shell faça a correspondência. Bash, ksh e zsh têm um padrão de negação !(t_*)para corresponder a todos os arquivos, exceto aqueles correspondentes t*; No bash, esse recurso precisa ser ativado shopt -s extglobe, no zsh, precisa ser ativado setopt ksh_glob. O Zsh também possui a sintaxe equivalente ^t_*que precisa ser ativada setopt extended_glob. Isso ainda não ignora os diretórios. O Zsh possui um recurso extra que permite corresponder arquivos não apenas pelo nome, mas também por metadados e mais: qualificadores glob . Adicione (.)no final de uma correspondência para restringir a arquivos regulares. A negação ^faz parte da sintaxe de correspondência de nome, portanto, ^t_*(.)significa "todos os arquivos regulares que não correspondem t_*" e "não todos os arquivos que não correspondem aos arquivos regulares t_*".
setopt extended_glob # put this in your ~/.zshrc
ls uploads/^t_*(.)
Se você se encontrar sem ferramentas avançadas, poderá fazer isso em qualquer unix com find. Não é o tipo de coisa que você normalmente digita na linha de comando, mas é poderoso e preciso. Caleb já mostrou como fazer isso com o GNU find . A -maxdepthopção não é portátil; você pode usar -prune, em vez disso, para parar findde recorrer com portabilidade.
find uploads/* -type d -prune -o \! -type f -name 't_*' -print
Substitua -printpor -exec ls -lG -- {} +para executar lscom suas opções favoritas nos arquivos.
Todos os comandos acima ocultam arquivos de ponto (ou seja, arquivos cujo nome começa com a .). Se você deseja exibi-los, passe -Apara lsou adicione o Dqualificador glob em zsh ( ls uploads/^t_*(.D)). Com find, você pode usar uma abordagem diferente para fazer com que ela recorra apenas um nível ( findnão trata especialmente os arquivos de ponto). Isso só funciona totalmente se você executar findno diretório atual.
cd uploads && find . -name . -o -type d -prune -o \! -type f -name 't_*' -print