ls command

The ls command is one of the more basic commands in Linux. It is designed to list names and features of files and directories. It can be used for a single file or as many as all files and folders in a selected set of directories.

Command: ls
Synopsis: ls [option]… [file]…

Below is a list of the options that can be used with the ls command. You can use more than one at a time, making the command more efficient to your needs.

OptionLong NameDescription
-a–allLists all files including those that begin with .
-A–almost-allLists all files except . and ..
-b–escapeprint octal escapes for nongraphic characters
-B–ignore-backupsdoes not list implied entries ending with ~
-cwith -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
-Clist entries by columns
-d–directorylist directory entries instead of contents, and do not dereference symbolic links
-D–diredgenerate output designed for Emacsâ dired mode
-fdo not sort
-F–classifyappend indicator (one of */=>@|) to entries
-gWorks like -l (long list) but does not display owner.
-G–no-groupWorks like -l (long list) but does not group names.
-h–human-readablewhen used with -l (long list), prints sizes in human readable format (e.g., 1K 234M 2G)
-H–dereference-command-linefollow symbolic links listed on the command line
-i–inodeprint the index number of each file
-I–ignore=PATTERNdo not list implied entries matching shell PATTERN
-k–block-size=1KDisplays entry size in kilobytes (rounded up). Long name allows to set block size.
-lDisplays entries in a long list format.
-L–dereferencewhen showing file information for a symbolic link, show information for the file the link references rather than for the link itself
-mfills the width of the terminal with a comma separated list of entries
-n–numeric-uid-gidlike -l (long list), but lists numeric user and group IDs instead of name
-N–literalprints raw entry names (does not treat e.g. control characters special)
-olike -l, but do not list group information
-p–indicator-style=slashappends a / indicator to directories
-q–hide-control-charsprint ? instead of non graphic characters
-Q–quote-namedisplay entries enclosed in double quotes
-r–reversereverse order while sorting
-R–recursivelists all subdirectories recursively
-s–sizeprint the allocated size of each file, in blocks
-Sdisplays entries sorted by filesize
-tsort by modification time
-T–tabsize=COLSassume tab stops at each column instead of 8
-uwith -lt: sort by, and show, access time. with -l: show access time and sort by name. otherwise: sort by access time
-Udo not sort; list entries in directory order
-vnatural sort of (version) numbers within text
-wassume screen width instead of current value
-xlist entries by lines instead of by columns
-Xsort alphabetically by entry extension
-1list one file per line
-Z Display security context so it fits on most displays. Displays only mode, user, group, security context and file name.


The ls base command

This example displays the base command with no switches or parameters. Note the files and folders are displayed in a row. Directories display in blue and have a trailing slash.

     ./  ../  error_log images/  index.php  testfile.txt

Using the long list option

One of the more common switches, the long listing (-l) displays much more data than the base command. It displays the permissions, the owner, group, size, date last modified, and the name of the file.

 $# ls -l total 32 drwxr-xr-x  3 root    root     4096 Jun  3 10:19 ./ drwxr-x--- 25 root    root     4096 Jun  3 10:16 ../ -rw-r--r--  1 root    root     12523 May  5 13:29 error_log drwxr-xr-x  2 root    root     4096 Jun  3 10:19 images/ -rw-r--r--  1 root    root       52 May  5 13:29 index.php -rw-r--r--  1 root    root        0 Jun  3 10:15 testfile.txt

Was this article helpful? Let us know!