Linux Commands Examples

A great documentation place for Linux commands


list directory contents


ls [OPTION]... [FILE]...

add an example, a script, a trick and tips

: email address (won't be displayed)
: name

Step 2

Thanks for this example ! - It will be moderated and published shortly.

Feel free to post other examples
Oops ! There is a tiny cockup. A damn 404 cockup. Please contact the loosy team who maintains and develops this wonderful site by clicking in the mighty feedback button on the side of the page. Say what happened. Thanks!


To print only directories (Linux doesn't have folders), no external command is needed:

printf "%s\n" */
example added by Chris F.A. Johnson

How can I sort the output of 'ls' by last modified date?

ls -t

or (for reverse, most recent at bottom):

ls -tr

The ls man page describes this in more details, and lists other options.


How to list folders using bash commands?

find . -maxdepth 1 -type d

Will list just folders. And as Teddy pointed out you'll need -maxdepth to stop it recusrsing into sub dirs


How do I limit the number of displayed lines through ls?

Simple - you pipe the output through head:

ls -Bgclt /somwhere/in/the/past | head -n 3

You use -n 3 instead of -n 2 because of the 'total' line at the top of the ls output.


How can I make "ls" show dotfiles first?

Try adding

export LC_COLLATE="C"

in your dotfiles, or changing the LC_ALL assignment to:

export LC_ALL="C"

This controls the way sorting on character level works — while the default would be to sort dotfiles inline, this will make sort list dotfiles first.

To go further, quoting the GNU Coreutils manual (emphasis mine):

If you use a non-POSIX locale (e.g., by setting LC_ALL to en_US), then sort may produce output that is sorted differently than you're accustomed to.

In that case, set the LC_ALL environment variable to C. Note that setting only LC_COLLATE has two problems. First, it is ineffective if LC_ALL is also set. Second, it has undefined behavior if LC_CTYPE (or LANG, if LC_CTYPE is unset) is set to an incompatible value. For example, you get undefined behavior if LC_CTYPE is ja_JP.PCK but LC_COLLATE is en_US.UTF-8.

ls /
ls .

what does the asterisk mean after a filename if you do ls -l

It means that the file is executable. A classifier is shown when -F is passed to ls via the command line or otherwise.


How do I get ls --color=auto to work on Mac OS X?

ls is actually separate from Bash. OS X has a BSD version of ls, which requires -G on the command line, or CLICOLOR (and perhaps LSCOLORS) in the environment.

See man ls for more info.


ls -d is not displaying directories. Is there a way to get ls to only display directories instead of files and directories

Try this

 find . -maxdepth 1 -type d

to get just directories under your current location.


Tell `ls` to print only the base filename

Found the answer myself .. which is to use the basename command.

ls /net/nas/data/languages/pypm/sites/rex/free/2.6/*/pool/v/vi/virtual*1.4.4*pypm | xargs -n 1 basename

ls and du shows VERY different size!

It's a sparse file. ls is reporting the allocated size; du is reporting the amount of space actually used.

As your torrent client downloads more it will fill in the gaps and the du-reported size will grow to match what ls reports.


How to have Linux ls command show second in time stamp

Does your version of ls support the --time-style option? If so:

ls -la --time-style=full-iso blah

-rw-r--r-- 1 root root 0 2011-11-08 18:02:08.954092000 -0700 blah

is there a way to read the cumulative size of all files in a folder?

You can use the du command:

du -sh foldername

What is the meaning of 'T' in the execution permissions of a directory?

Look for sticky bit in here.
Regarding your second question, look at this wikipedia entry on how to set it.

The difference between the two is that 'T' is present

on a file or directory without the execution bit set for the others category


Linux shows several folders with the exact same name

Run fsck on this partition: examples

Do not forget unmount partition before and mount it back after fsck process.


How can I list only non-empty files using ls?

find dirname -type f ! -empty


List information about the FILEs (the current directory by default). Sort entries alphabetically if none of -cftuvSUX nor --sort is specified.

Mandatory arguments to long options are mandatory for short options too.
, --all

do not ignore entries starting with .

-A, --almost-all

do not list implied . and ..


with -l, print the author of each file

-b, --escape

print C-style escapes for nongraphic characters


scale sizes by SIZE before printing them. E.g., ’--block-size=M’ prints sizes in units of 1,048,576 bytes. See SIZE format below.

-B, --ignore-backups

do not list implied entries ending with ~


with -lt: sort by, and show, ctime (time of last modification of file status information) with -l: show ctime and sort by name otherwise: sort by ctime, newest first


list entries by columns


colorize the output. WHEN defaults to ’always’ or can be ’never’ or ’auto’. More info below

-d, --directory

list directory entries instead of contents, and do not dereference symbolic links

-D, --dired

generate output designed for Emacs’ dired mode


do not sort, enable -aU, disable -ls --color

-F, --classify

append indicator (one of */=>@|) to entries


likewise, except do not append ’*’


across -x, commas -m, horizontal -x, long -l, single-column -1, verbose -l, vertical -C


like -l --time-style=full-iso


like -l, but do not list owner


group directories before files.

augment with a --sort option, but any use of --sort=none (-U) disables grouping

-G, --no-group

in a long listing, don’t print group names

-h, --human-readable

with -l, print sizes in human readable format (e.g., 1K 234M 2G)


likewise, but use powers of 1000 not 1024

-H, --dereference-command-line

follow symbolic links listed on the command line


follow each command line symbolic link that points to a directory


do not list implied entries matching shell PATTERN (overridden by -a or -A)


append indicator with style WORD to entry names: none (default), slash (-p), file-type (--file-type), classify (-F)

-i, --inode

print the index number of each file

-I, --ignore=PATTERN

do not list implied entries matching shell PATTERN

-k, --kibibytes

use 1024-byte blocks


use a long listing format

-L, --dereference

when showing file information for a symbolic link, show information for the file the link references rather than for the link itself


fill width with a comma separated list of entries

-n, --numeric-uid-gid

like -l, but list numeric user and group IDs

-N, --literal

print raw entry names (don’t treat e.g. control characters specially)


like -l, but do not list group information

-p, --indicator-style=slash

append / indicator to directories

-q, --hide-control-chars

print ? instead of non graphic characters


show non graphic characters as-is (default unless program is ’ls’ and output is a terminal)

-Q, --quote-name

enclose entry names in double quotes


use quoting style WORD for entry names: literal, locale, shell, shell-always, c, escape

-r, --reverse

reverse order while sorting

-R, --recursive

list subdirectories recursively

-s, --size

print the allocated size of each file, in blocks


sort by file size


sort by WORD instead of name: none -U, extension -X, size -S, time -t, version -v


with -l, show time as WORD instead of modification time: atime -u, access -u, use -u, ctime -c, or status -c; use specified time as sort key if --sort=time


with -l, show times using style STYLE: full-iso, long-iso, iso, locale, +FORMAT. FORMAT is interpreted like ’date’; if FORMAT is FORMAT1<newline>FORMAT2, FORMAT1 applies to non-recent files and FORMAT2 to recent files; if STYLE is prefixed with ’posix-’, STYLE takes effect only outside the POSIX locale


sort by modification time, newest first

-T, --tabsize=COLS

assume tab stops at each COLS instead of 8


with -lt: sort by, and show, access time with -l: show access time and sort by name otherwise: sort by access time


do not sort; list entries in directory order


natural sort of (version) numbers within text

-w, --width=COLS

assume screen width instead of current value


list entries by lines instead of by columns


sort alphabetically by entry extension

-Z, --context

print any SELinux security context of each file


list one file per line


display this help and exit


output version information and exit

SIZE is an integer and optional unit (example: 10M is 10*1024*1024). Units are K, M, G, T, P, E, Z, Y (powers of 1024) or KB, MB, ... (powers of 1000).

Using color to distinguish file types is disabled both by default and with --color=never. With --color=auto, ls emits color codes only when standard output is connected to a terminal. The LS_COLORS environment variable can change the settings. Use the dircolors command to set it.

Exit status:


if OK,


if minor problems (e.g., cannot access subdirectory),


if serious trouble (e.g., cannot access command-line argument).


Copyright © 2012 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later <>.
This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law.

reporting bugs

Report ls bugs to bug-coreutils[:at:]gnu[:dot:]org
GNU coreutils home page: <>
General help using GNU software: <>
Report ls translation bugs to <>

see also

The full documentation for ls is maintained as a Texinfo manual. If the info and ls programs are properly installed at your site, the command

info coreutils 'ls invocation'

should give you access to the complete manual.


Written by Richard M. Stallman and David MacKenzie.

How can this site be more helpful to YOU ?

give  feedback