Linux / Unix: Bash Find Matching All Dot Files

by on September 14, 2011 · 5 comments· LAST UPDATED April 24, 2013

in

A dot-file is generally any file whose name begins with a full stop. In Linux or Unix like operating system it is also called as hidden file. How do I list all dot files in my home directory?

You can use the ls command to list all dot files in your current directory:

 
ls  .*
 

Sample outputs:

.bash_history  .bash_profile  .bashrc  .lesshst  .profile  .viminfo
.:
checkfs  checkroot  interfaces	interfaces.new	scripts  securedata.keyfile
..:
lost+found  root  root.user.only
.aptitude:
cache  config
.keychain:
nas01-csh  nas01-fish  nas01-sh
.ssh:
id_rsa	id_rsa.pub  known_hosts
.system_file_bakups:
.vim:

Please use the following syntax instead of .* for security reasons to avoid unexpected results:

 
ls  .[^.]*
 

Another option is to use the find command:
$ find . -name ".*"
OR
$ find . -name ".[^.]*"
Sample outputs:

.
./.bash_history
./.system_file_bakups
./.viminfo
./.bashrc
./.lesshst
./.ssh
./.profile
./.aptitude
./.bash_profile
./.vim
./.vim/.netrwhist
./.keychain

To list only matching dot files, enter:
$ find . -type f -name ".*"
Sample outputs:

./.bash_history
./.viminfo
./.bashrc
./.lesshst
./.profile
./.bash_profile
./.vim/.netrwhist

To list only matching dot directories, enter:
$ find . -type d -name ".*"
Sample outputs:

.
./.system_file_bakups
./.ssh
./.aptitude
./.vim
./.keychain
TwitterFacebookGoogle+PDF versionFound an error/typo on this page? Help us!

{ 5 comments… read them below or add one }

1 kavinnath September 14, 2011 at 2:50 pm

. can be displayed using the command
ls -a

Reply

2 Chris H October 13, 2011 at 7:47 pm

I always liked “ls .??*” as it excludes the “.” and “..” directories. Will miss any file/directory names which are “.” followed by a single character, though. Could get fancy, set the extglob shell extension (shopt -s extglob) and then:

ls .!(.)*

Reply

3 muchrons October 14, 2011 at 1:36 pm

Another way to list “.” files and directories is “ls -d .*”

Reply

4 Rick Stanley October 15, 2011 at 5:04 pm

I think what most people want is either:
ls -d .*
To list all .files, and .directories, without listing .directory contents
or
ls -ld .*
The same but in long format.

Reply

5 Bengt Grahn August 29, 2012 at 2:03 pm

This is all very well, but how do I get rid of the stupid “./.” at the beginning of the names? I want an output that looks like this:

.system_file_bakups
.ssh
.aptitude
.vim
.keychain

Nice and clean, no extra characters and only directory names!

Reply

Leave a Comment

Tagged as: , , , , , , , , , , , , , , , ,

Previous Faq:

Next Faq: