---
name: "plan9-ls"
section: "1"
platform: "linux"
package: "9base"
version: "1:6-5"
release: "Debian 7 (Wheezy)"
platforms: ["linux"]
url: "https://new.carta.tech/plan9-ls"
---

# plan9-ls(1)

list contents of directory

## NAME

ls, lc - list contents of directory

## SYNOPSIS

**ls** \[ **-dlmnpqrstuFQ** \] *name ...*

**lc** \[ **-dlmnpqrstuFQ** \] *name ...*

## DESCRIPTION

For each directory argument, *ls* lists the contents of the directory; for each file argument, *ls* repeats its name and any other information requested. When no argument is given, the current directory is listed. By default, the output is sorted alphabetically by name.

*Lc* is the same as *ls*, but sets the **-p** option and pipes the output through [*mc*(1)](/mc/1.md).

There are a number of options:

- **-d**

  If argument is a directory, list it, not its contents.

- **-l**

  List in long format, giving mode (see below), file system type (e.g., for devices, the **#** code letter that names it; see [*intro*(3)](/intro/3.md)), the instance or subdevice number, owner, group, size in bytes, and time of last modification for each file.

- **-m**

  List the name of the user who most recently modified the file.

- **-n**

  Don't sort the listing.

- **-p**

  Print only the final path element of each file name.

- **-q**

  List the *qid* (see [*stat*(3)](/stat/3.md)) of each file; the printed fields are in the order path, version, and type.

- **-r**

  Reverse the order of sort.

- **-s**

  Give size in Kbytes for each entry.

- **-t**

  Sort by time modified (latest first) instead of by name.

- **-u**

  Under **-t** sort by time of last access; under **-l** print time of last access.

- **-F**

  Add the character **/** after all directory names and the character **\*** after all executable files.

- **-L**

  Print the character **t** before each file if it has the temporary flag set, and **-** otherwise.

- **-Q**

  By default, printed file names are quoted if they contain characters special to [*rc*(1)](/rc/1.md). The **-Q** flag disables this behavior.

The mode printed under the **-l** option contains 11 characters, interpreted as follows: the first character is

- **d**

  if the entry is a directory;

- **a**

  if the entry is an append-only file;

- **D**

  if the entry is a Unix device;

- **L**

  if the entry is a symbolic link;

- **P**

  if the entry is a named pipe;

- **S**

  if the entry is a socket;

- **-**

  if the entry is a plain file.

The next letter is **l** if the file is exclusive access (one writer or reader at a time).

The last 9 characters are interpreted as three sets of three bits each. The first set refers to owner permissions; the next to permissions to others in the same user-group; and the last to all others. Within each set the three characters indicate permission respectively to read, to write, or to execute the file as a program. For a directory, \`execute' permission is interpreted to mean permission to search the directory for a specified file. The permissions are indicated as follows:

- **r**

  if the file is readable;

- **w**

  if the file is writable;

- **x**

  if the file is executable;

- **-**

  if none of the above permissions is granted.

## SOURCE

**/src/cmd/ls.c**\
 **/bin/lc**

## SEE ALSO

[*stat*(3)](/stat/3.md), [*mc*(1)](/mc/1.md)
