GNU ls (es decir, el comando ls en sistemas Linux no integrados y Cygwin, también disponible en algunos otros dispositivos) tiene una opción para ocultar algunos archivos, en función de sus nombres. Sin embargo, no hay forma de ignorar los directorios.
ls --hide='t_*' uploads
Otro enfoque es hacer que su shell haga la correspondencia. Bash, ksh y zsh tienen un patrón de negación !(t_*)para que coincida con todos los archivos, excepto los que coinciden t*; en bash, esta característica debe shopt -s extglobactivarse y en zsh debe activarse con setopt ksh_glob. Zsh también tiene la sintaxis equivalente con la ^t_*que debe activarse setopt extended_glob. Esto todavía no ignora los directorios. Zsh tiene una característica adicional que permite hacer coincidir archivos no solo por nombre sino también por metadatos y más: calificadores globales . Agregue (.)al final de una coincidencia para restringir a los archivos normales. La negación ^es parte de la sintaxis de coincidencia de nombres, por lo que ^t_*(.)significa "todos los archivos normales no coinciden t_*" y no "todos los archivos que no coinciden con los archivos normales t_*".
setopt extended_glob # put this in your ~/.zshrc
ls uploads/^t_*(.)
Si te encuentras sin herramientas avanzadas, puedes hacerlo en cualquier Unix con find. No es el tipo de cosa que normalmente escribiría en la línea de comando, pero es potente y preciso. Caleb ya ha mostrado cómo hacer esto con GNU find . La -maxdepthopción no es portátil; puede usar -pruneen su lugar, para evitar que se repita findde forma portátil.
find uploads/* -type d -prune -o \! -type f -name 't_*' -print
Reemplace -printpor -exec ls -lG -- {} +para ejecutar lscon sus opciones favoritas en los archivos.
Todos los comandos anteriores ocultan archivos de puntos (es decir, archivos cuyo nombre comienza con a .). Si desea mostrar ellos, pasar -Aa ls, o añadir el Dcalificativo pegote en zsh ( ls uploads/^t_*(.D)). Con find, puede usar un enfoque diferente para hacer que se repita solo un nivel ( findno trata los archivos de puntos especialmente). Esto solo funciona completamente si se ejecuta finden el directorio actual.
cd uploads && find . -name . -o -type d -prune -o \! -type f -name 't_*' -print