O GNU ls (ou seja, o comando ls em sistemas Linux não embarcados e o Cygwin, também disponível em outros unices) tem a opção de ocultar alguns arquivos, com base em seus nomes. Não há como ignorar diretórios.
ls --hide='t_*' uploads
Outra abordagem é fazer com que o 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 os correspondentes a t* ; no bash, esse recurso precisa ser ativado com shopt -s extglob e, em zsh, ele precisa ser ativado com setopt ksh_glob . O Zsh também possui a sintaxe equivalente ^t_* , que precisa ser ativada com setopt extended_glob . Isso ainda não ignora diretórios. O Zsh tem um recurso extra que permite corresponder arquivos não apenas pelo nome, mas também por metadados e mais: glob qualificadores . Adicione (.) no final de uma partida para restringir a arquivos regulares. A negação ^ faz parte da sintaxe de correspondência de nomes, portanto, ^t_*(.) significa “todos os arquivos regulares não correspondem a t_* ” e não “todos os arquivos que não são arquivos regulares correspondentes a t_* ”.
setopt extended_glob # put this in your ~/.zshrc
ls uploads/^t_*(.)
Se você se encontrar sem ferramentas avançadas, você pode fazer isso em qualquer unix com find . Não é o tipo de coisa que você normalmente digitaria na linha de comando, mas é poderoso e preciso. Caleb tem já mostramos como fazer isso com o GNU find . A opção -maxdepth não é portátil; você pode usar -prune , para portably parar find de recursing.
find uploads/* -type d -prune -o \! -type f -name 't_*' -print
Substitua -print por -exec ls -lG -- {} + para executar ls com suas opções favoritas nos arquivos.
Todos os comandos acima ocultam arquivos dot (ou seja, arquivos cujo nome começa com . ). Se você quiser exibi-los, passe -A para ls ou adicione o qualificador D glob em zsh ( ls uploads/^t_*(.D) ). Com find , você pode usar uma abordagem diferente para reciclar apenas um nível ( find não trata especialmente os arquivos de pontos). Isso só funciona totalmente se você executar find no diretório atual.
cd uploads && find . -name . -o -type d -prune -o \! -type f -name 't_*' -print