Which command can be used to view hidden files in linux?

Home / How To / How to Show Hidden Files in Linux Ubuntu Terminal

How to show hidden files in Ubuntu using terminal (command line). Wondering which command will list the hidden files in Linux Ubuntu? Use Ubuntu ls command to show hidden files in Linux command line.

The ls command can be used to show hidden files in Ubuntu using terminal (command line). Ls command has many options which can be used to get info about files. Ls command options “-a” and “-l” can be used with Ubuntu ls command to show hidden files in Ubuntu using terminal command line.

The ‘ls’ program lists information about files (of any type, including directories). Options and file arguments can be intermixed arbitrarily, as usual. For non-option command-line arguments that are directories, by default ‘ls’ lists the contents of directories, not recursively, and omitting files with names beginning with ‘.’. For other non-option arguments, by default ‘ls’ lists just the file name. If no non-option argument is specified, ‘ls’ operates on the current directory, acting as if it had been invoked with a single argument of ‘.’.

By default, the output is sorted alphabetically, according to the locale settings in effect.(1) If standard output is a terminal, the output is in columns (sorted vertically) and control characters are output as question marks; otherwise, the output is listed one per line and control characters are output as-is.

Because ‘ls’ is such a fundamental program, it has accumulated many options over the years. They are described in the subsections below; within each section, options are listed alphabetically (ignoring case). The division of options into the subsections is not absolute, since some options affect more than one aspect of ‘ls’’s operation.

Show Hidden Files in Ubuntu Terminal

The “ls” command option “-a” will show all files and folders, including hidden ones. It shows the list in “long format” which includes the permissions, owner, group, size, last-modified date, number of hard links and the filename described.

Which command can be used to view hidden files in linux?
Which command can be used to view hidden files in linux?

The following command options can be used:

  1. ‘-a’ or ‘–all’: In directories, do not ignore file names that start with ‘.’.
  2. ‘-A’ or ‘–almost-all’: In directories, do not ignore all file names that start with ‘.’; ignore only ‘.’ and ‘..’. The ‘–all’ (‘-a’) option overrides this option.
  3. ‘-l’ or ‘–format=long’ or ‘–format=verbose’: In addition to the name of each file, print the file type, file mode bits, number of hard links, owner name, group name, size, and timestamp (note Formatting file timestamps::), normally the modification time. Print question marks for information that cannot be determined. For each directory that is listed, preface the files with a line ‘total BLOCKS’, where BLOCKS is the total disk allocation for all files in that directory. The block size currently defaults to 1024 bytes, but this can be overridden (note Block size::). The BLOCKS computed counts each hard link separately; this is arguably a deficiency.

Apart from using terminal commands to see hidden files, you can use snipping tools for Linux which enables you to gather a detailed on-screen info for the system.

Using ls Command to Show Hidden Files in Ubuntu Terminal

You can use the following ls command options to list hidden files (see screenshots):

Which command can be used to view hidden files in linux?

Note that there is a difference between -a and -A option. The -a option displays hidden files and directories with current directory (.) and parent directory (..) where -A ls command options doesn’t show it.

I have a directory that contains thousands of files, some of them are hidden.

The command ls -a list all files, including hidden ones, but I need just to list hidden files.

What command should I use?

Which command can be used to view hidden files in linux?

muru

185k47 gold badges447 silver badges691 bronze badges

asked May 19, 2014 at 0:10

Which command can be used to view hidden files in linux?

1

The command :

ls -ld .?*

Will only list hidden files .

Explain :

-l use a long listing format -d, --directory list directory entries instead of contents, and do not derefer‐ ence symbolic links .?* will only state hidden files

Which command can be used to view hidden files in linux?

terdon

94.1k15 gold badges187 silver badges286 bronze badges

answered May 19, 2014 at 0:10

Which command can be used to view hidden files in linux?

nuxnux

36k33 gold badges115 silver badges130 bronze badges

10

ls -d .!(|.)

Does exactly what OP is looking for .

Which command can be used to view hidden files in linux?

nux

36k33 gold badges115 silver badges130 bronze badges

answered May 19, 2014 at 4:52

patrickpatrick

5303 silver badges5 bronze badges

5

ls -ad .*

works for me in Bash.

answered May 19, 2014 at 4:55

Which command can be used to view hidden files in linux?

MarkMark

1,0361 gold badge8 silver badges12 bronze badges

2

If you just want the files in your current directory (no recursion), you could do

echo .[^.]*

That will print the names of all files whose name starts with a . and is followed by one or more non-dot characters. Note that this will fail for files whose name starts with consecutive dots, so for example ....foo will not be shown.

You could also use find:

find -mindepth 1 -prune -name '.*'

The -mindepth ensures we don't match . and the -prune means that find won't descend into subdirectories.

answered May 19, 2014 at 2:57

Which command can be used to view hidden files in linux?

terdonterdon

94.1k15 gold badges187 silver badges286 bronze badges

Using find and awk,

find . -type f | awk -F"/" '$NF ~ /^\..*$/ {print $NF}'

Explanation:

find . -type f --> List all the files in the current directory along with it's path like,

./foo.html ./bar.html ./.foo1

awk -F"/" '$NF ~ /^\..*$/ {print $NF}'

/ as field separator awk checks for the last field staring with a dot or not. If it starts with a dot, then it prints the last field of that corresponding line.

answered May 19, 2014 at 2:46

Avinash RajAvinash Raj

74.3k52 gold badges209 silver badges250 bronze badges

1

find is usually a better option for complicated searches than using name globbing.

find . -mindepth 1 -maxdepth 1 -name '.*'

or

find . -mindepth 1 -maxdepth 1 -name '.*' -o -name '*~'

find . searches current directory

-mindepth 1 excludes . and .. from the list

-maxdepth 1 limits the search to the current directory

-name '.*' find file names that start with a dot

-o or

-name '*~' find file names that end with a tilde (usually, these are backup files from text editing programs)

However, this and all of the other answers miss files that are in the current directory's .hidden file. If you are writing a script, then these lines will read the .hidden file and display the file names of those that exist.

if [[ -f .hidden]] # if '.hidden' exists and is a file then while read filename # read file name from line do if [[ -e "$filename" ]] # if the read file name exists then echo "$filename" # print it fi done < .hidden # read from .hidden file fi

answered May 19, 2014 at 21:24

Mark HMark H

2811 silver badge5 bronze badges

4

I think that you can do it with following command.

ls -a | grep "^\." | grep -v "^\.$" | grep -v "^\..$"

ls -a command you entered, that shows all files and directories in current working directory.

grep "^\." command I appended, that filters output to shows only hidden files(It's name starts with ".").

grep -v "^\.$" | grep -v "^\..$" command I appended, that filters output to exclude ., ..(They are current and parent directory).

If some filenames can have more than a line with "\n", above example could be incorrect.

So I suggest following command to solve it issue.

find -maxdepth 1 -name ".[!.]*"

answered May 19, 2014 at 2:00

Which command can be used to view hidden files in linux?

xiaodongjiexiaodongjie

2,7361 gold badge16 silver badges37 bronze badges

2

What else you could have done, is ls .?* Or ls .!(|) that will show you everything in the current dir hidden files/dirs on the top and other files/dirs below

e.g: from my terminal

$ ls .?* .bash_history .dmrc .macromedia .weather .bash_logout .gksu.lock .profile .wgetrc .bash_profile .bashrc.save .ICEauthority .toprc .Xauthority .bashrc .lastdir .viminfo .xsession-errors .bashrc~ .dircolors .lynxrc .vimrc .xsession-errors.old ..: Baron .adobe: Flash_Player .aptitude: cache config .cache: compizconfig-1 rhythmbox dconf shotwell

Now notice in the above results, it shows you every file/dir with its subdir and any hidden files right below.

[1:0:248][ebaron@37signals:pts/4][~/Desktop] $ ls .!(|) .bash_aliases .bashrc1 .bashrc1~ ..: askapache-bash-profile.txt examples.desktop Public top-1m.csv backups Firefox_wallpaper.png PycharmProjects top-1m.csv.zip Desktop java_error_in_PYCHARM_17581.log Shotwell Import Log.txt topsites.txt Documents Music Templates Videos Downloads Pictures texput.log vmware

Sorry, I cannot comment. to explain the difference here between ls .?* and @cioby23 answer ls -d .[!.]* .??* And why it is actually printing hidden files twice is because literally you're asking twice .??*, .?*, .[!.]* they're the same thing, so adding any of them with different command characters will print twice.

answered Mar 19, 2015 at 5:47

Which command can be used to view hidden files in linux?

amrxamrx

1,29813 silver badges19 bronze badges

Approach 1: ls -d .{[!.],.?}*

Explain: I want to exclude . and .. but include file such as ..i_am_also_a_hidden_file.txt

  1. ls -d .* undesirably shows . and ..
  2. ls -d .?* (the current accepted answer) undesirably shows ..
  3. ls -d .[!.]* undesirably will not show ..i_am_also_a_hidden_file.txt
  4. ls -d .{[!.],.?}* is the answer

Approach 2: ls -A | grep "\\."

I personally like this way better

Which command can be used to view hidden files in linux?

ldias

1,7957 silver badges21 bronze badges

answered May 3, 2020 at 19:16

You can also use:

ls -d .[!.]* .??*

This will allow you to display normal hidden files and hidden files which begin with 2 or 3 dots for example : ..hidden_file

Which command can be used to view hidden files in linux?

nux

36k33 gold badges115 silver badges130 bronze badges

answered May 19, 2014 at 5:05

Which command can be used to view hidden files in linux?

cioby23cioby23

2,47515 silver badges14 bronze badges

1

you can use the command

ls -Ad .??*

This has the advantage of allowing multi-column listing, unlike the grep-based approach in the ls -a | grep "^\." solutions

answered May 6, 2015 at 15:46

MaythuxMaythux

79.7k53 gold badges233 silver badges266 bronze badges

With bash, setting the GLOBIGNORE special variable is some non-empty value is enough to make it ignore . and .. when expanding globs. From the Bash docs:

The GLOBIGNORE shell variable may be used to restrict the set of filenames matching a pattern. If GLOBIGNORE is set, each matching filename that also matches one of the patterns in GLOBIGNORE is removed from the list of matches. If the nocaseglob option is set, the matching against the patterns in GLOBIGNORE is performed without regard to case. The filenames . and .. are always ignored when GLOBIGNORE is set and not null. However, setting GLOBIGNORE to a non-null value has the effect of enabling the dotglob shell option, so all other filenames beginning with a ‘.’ will match.

If we set it to .:.., both . and .. will be ignored. Since setting it to anything non-null will also get this behaviour, we might as well set it to just .

So:

GLOBIGNORE=. ls -d .*

answered Sep 26, 2018 at 2:36

Which command can be used to view hidden files in linux?

murumuru

185k47 gold badges447 silver badges691 bronze badges

All the answers so far are based on the fact that files (or directories) which names start with a dot are "hidden". I came up with another solution, that might not be as efficient, but this solution does not assume anything about the names of the hidden files, and therefore avoids listing .. in the result (as does the currently accepted answer).

The full command is:

ls -d $(echo -e "$(\ls)\n$(\ls -A)" | sort | uniq -u)

Explanation

What this does is list all the files (and directories) twice,

echo -e "$(\ls)\n$(\ls -A)"

but only showing hidden files once -A.

Then the list is sorted | sort which makes regular (unhidden) files appear twice and next to each other.

Then, remove all lines that appear more than once | uniq -u, only leaving unique lines.

Finally use ls again to list all the files with the user's custom options and without listing the contents of the directories in the list -d.

EDIT (Limitations):

As muru pointed out, this solution will not work correctly if there are files with names such as escaped\ncharacter.txt because echo -e will split the filename into two lines. It will also not work as expected if there are two hidden files with almost the same name except for a special character, such as .foo[tab].txt and .foo[new-line].txt as both of those are printed as .foo?.txt and would be eliminated by uniq -u

answered Sep 26, 2018 at 2:00

6

Alternatively, you can also use echo .*

e.g.

user@linux:~$ echo .* . .. .bash_aliases .bash_history .bash_logout .bashrc user@linux:~$

If you prefer it in long list format, just convert the white space to a new line.

user@linux:~$ echo .* | tr ' ' '\n' . .. .bash_aliases .bash_history .bash_logout .bashrc user@linux:~$

answered Jun 17, 2019 at 12:42

SabrinaSabrina

1,7634 gold badges18 silver badges28 bronze badges

To list all hidden files and folders:

ls -ld .*

To list hidden files only:

ls -ld .*|grep -v ^d

To list hidden folders only:

ls -ld .*|grep ^d

answered May 17, 2020 at 18:12

Which command can be used to view hidden files in linux?

You can also use process substitution

diff <(ls -1A) <(ls -1)

Explanation:

Piping the stdout of a command into the stdin of another is a powerful technique. But, what if you need to pipe the stdout of multiple commands? This is where process substitution comes in. Process substitution feeds the output of a process (or processes) into the stdin of another process

Cited from here

So you are piping two outputs into the diff command.

The first command is "ls -1A". The "-A" flag works like the "-a" flag, but it does not show you "." and "..". So it basically shows you all the files and directories (both hidden and not-hidden) in a directory. The "-1" flag displays the output of "ls" one below the other vertically and not in a horizontal list.

answered Jul 21, 2020 at 15:06

FerdiFerdi

1011 bronze badge

I don't like -d because it only shows no matches found if there are no matches.

It also does not show total [size] at top of lines.

I think ls -lA --ignore "[^\.]*" is a better solution.

answered Aug 2, 2020 at 9:41

ls -A | grep "^\."

  • ls -A lists all files (hidden and non-hidden)
  • grep "^\." filter apart the ones starting with a dot

answered Feb 13, 2021 at 16:55

Which command can be used to view hidden files in linux?

1

Thanks for all the tips on here!

Here's a function for your .bash_aliases file that handles no command arguments, doesn't throw errors on directories without hidden files, appends / on listed directories, and outputs to a single column.

lsa () { # Exit codes with/without argument are 0 if no hidden files present EXIT=$(ls -1d .!(|.) |& grep -q "No such file"; echo $?) EXIT_ARG=$(cd $1; ls -1d .!(|.) |& grep -q "No such file"; echo $?) # If no argument if [ $# -eq 0 ]; then if [ $EXIT -eq 0 ]; then printf "" else ls -1dp .!(|.) fi # If argument else if [ $EXIT_ARG -eq 0 ]; then printf "" else (cd $1; ls -1dp .!(|.)) fi fi }

answered Jul 10, 2021 at 0:01

Which command can be used to view hidden files in linux?

Jeff_VJeff_V

1214 bronze badges

A long list of answers, let's add one more, which doesn't seem to be included:

$ ls -lA | grep ' \.'

The -A option to ls includes all hidden files, except . and ...
grep, as used above finds . (space, dot) and filters away lines that do not have that.

$ ls -lA | grep -E '^d.* \.
... lists only dirs.

$ ls -lA | grep -Ev '^d.*' | grep ' \.'
... lists only files.

... and that last can be used as alternative for files-only
$ ls -lA | grep -E '^d.*' | grep ' \.'
just remove the -v flag on grep

answered Jun 12 at 9:56

Which command can be used to view hidden files in linux?

HannuHannu

4,0861 gold badge21 silver badges37 bronze badges

You can use the command

ls -pa | grep -v /

Explanation of flags:

  • -p will append "/" indicator to directories
  • -a will list hidden files
  • grep -v / commands will return the lines that do not contain a slash.

answered Dec 12, 2020 at 17:27

Which command can be used to view hidden files in linux?

Tejas LotlikarTejas Lotlikar

2,6545 gold badges15 silver badges26 bronze badges

You could also install the much friendlier Rust version of ls: exa. Then use the following to get a much nicer tree visualization of all the files:

exa -Ta

If you really end up liking exa like me, you can override ls with an alias on your .bashrc: alias ls="exa".

answered Feb 24, 2021 at 0:51

You can use grep:

ls -a | grep '^\.'

answered Nov 24, 2021 at 14:34

Josef KlimukJosef Klimuk

1,5164 gold badges18 silver badges33 bronze badges

1

Not the answer you're looking for? Browse other questions tagged command-line ls or ask your own question.

How can I see hidden files in Linux?

First, browse to the directory you want to view. 2. Then, press Ctrl+h . If Ctrl+h doesn't work, click the View menu, then check the box to Show hidden files.

Which command you use to see the hidden files?

For the quickest option, you can show hidden files using the keyboard shortcut CTRL + H. You can also right-click anywhere in a folder and check the Show hidden files option at the bottom.