The names of hidden files start with `.` (dot), there are none that start with `b`. To list names starting with `.b` use $ ls .b* This will also list the contents of any directory whose name starts with `.b`. Note that `-a` is not needed here as we explicitly give a filename pattern for the shell to match. Since the pattern starts with `.` (dot), it will match hidden files. The expanded pattern will be given to `ls` for processing. To avoid listing the contents of directories, use $ ls -d .b* The above solutions will give an error if no name matches the pattern. To only list the names of _regular files_ whose names start with `.b`, use $ for name in .b*; do test -f "$name" && printf '%s\n' "$name"; done To get the output in a similar way as with plain `ls`: $ for name in .b*; do test -f "$name" && printf '%s\n' "$name"; done | column The last couple of solutions will not print anything of no name matches the pattern.