How to show only hidden directories, and then find hidden files separately

To list only hidden files:

ls -ap | grep -v / | egrep "^\."  

Note that files here is everything that is not a directory. It's not file in "everything in Linux is a file" ;)

To list only hidden directories:

ls -ap | egrep "^\..*/$"  

Comments:

  • ls -ap lists everything in the current directory, including hidden ones, and puts a / at the end of directories.
  • grep -v / inverts results of grep /, so that no directory is included.
  • "^\..*/$" matches everything that start with . and end in /.
  • If you want to exclude . and .. directories from results of the second part, you can use -A option instead of -a for ls, or if you like to work with regex, you can use "^\.[^.]+/$" instead of "^\..*/$".

Have fun!


To list the hidden files and directories in the current directory, including . and ..:

echo .*

To list the hidden files and directories in the current directory and its subdirectories recursively:

find . -name '.*'

If you want to save the results to a file, use a redirection:

find . -name '.*' >output-file.txt

Switch to zsh (if you haven't already), and run

ls .*(^/)

The part inside parenthesis is so called glob modifiers and means to select everything but directories.

If you are interested only in plain files, so want to exclude not only directories, but also other special files (named pipes etc) then try

ls .*(.)