Listing The Contents Of A Directory
It is useful to see what files and directories in your current directory, or another directory. For this, we can use the ls
command.
$ ls includes post template index.jade run.coffee web
The ls
command is probably the most used command, and for good reason. With it, we can see directory contents and determine a variety of important file and directory attributes.
Listing a Different Directory ( ls <Directory>
)
To find out what files are in another directory. The ls
command allows you to specify a path to work on.
$ ls /usr/local/ CODEOFCONDUCT.md README.md lib CONTRIBUTING.md SUPPORTERS.md man Cellar bin opt LICENSE.txt etc share Library include
List multiple directories
to find out what fines are in home (~
) and /usr
$ ls ~ /usr /home/robin: Desktop Documents Music Pictures Public Templates Videos /usr: bin games kerberos libexec sbin src etc include lib local share tmp
List options
The ls
command has a large number of possible options. The most common are listed in the following table:
Option | Long Option | Description |
---|---|---|
-a |
--all |
List all files, even those with names that begin with a period, which are normally not listed (i.e., hidden). |
-A |
--almost-all |
Like the -a option above except it does not list . (current directory) and .. (parent directory). |
-d |
--directory |
Ordinarily, if a directory is specified, ls will list the contents of the directory, not the directory itself. Use this option in conjunction with the -l option to see details about the directory rather than its contents. |
-F |
--classify |
This option will append an indicator character to the end of each listed name. For example, a “/” if the name is a directory. |
-h |
--human-readable |
In long format listings, display file sizes in human readable format rather than in bytes. |
-l |
Display results in long format. | |
-r |
--reverse |
Display the results in reverse order. Normally, ls displays its results in ascending alphabetical order. |
-S |
Sort results by file size. | |
-t |
Sort by modification time. |
Listing All Files ( -a
)
It is common on Unix and Linux based machines to have "invisible" or "hidden" files that are prefixed with "."(dot). To see both "visible" and "hidden" files and directories, you can use -a
flag.
$ ls -a /usr/local/ . Cellar include .. LICENSE.txt lib .git Library man .gitignore README.md opt .yardopts SUPPORTERS.md share CODEOFCONDUCT.md bin CONTRIBUTING.md etc
Long Form Listing ( -l
)
One of the most useful flags for ls
is the -l
flag. It will list out the names of the files and directories as well as give more detailed information about them.
$ ls -l -rw-r--r-- 1 robin admin 3160 14 Apr 00:27 CODEOFCONDUCT.md -rw-r--r-- 1 robin admin 1103 14 Apr 00:27 CONTRIBUTING.md drwxr-xr-x 7 robin admin 238 14 Apr 00:28 Cellar -rw-r--r-- 1 robin admin 1241 14 Apr 00:27 LICENSE.txt drwxr-xr-x 10 robin admin 340 14 Apr 00:28 Library -> /Users/robin/Dropbox/Library -rw-r--r-- 1 robin admin 2064 14 Apr 00:27 README.md -rw-r--r-- 1 robin admin 23781 14 Apr 00:27 SUPPORTERS.md drwxrwxr-x 23 root admin 782 14 Apr 00:28 bin drwxr-xr-x 3 robin admin 102 14 Apr 00:28 etc drwxrwxr-x 30 root admin 1020 17 Mar 23:06 include drwxrwxr-x 22 root admin 748 17 Mar 23:06 lib drwxr-xr-x 5 root wheel 170 30 Mar 2013 man drwxr-xr-x 7 robin admin 238 14 Apr 00:28 opt drwxrwxr-x 10 root admin 340 14 Apr 00:28 share
If the -l
is given, the following information is displayed for each files: file mode, number of links, owner name, group name, number of bytes in the file, abbreviated month, day-of-month file last modified, hour file last modified, minutes file last modified, and the pathname. In addition, some paths are followed by -> and another path. These paths are symlinked to the directories that follow the ->.
Human Readable Sizes ( -h
)
ls -l
gives us a more detailed view of files and directories in our current directory, including the number of bytes in the file.
While knowing the number of bytes can be useful, but it more useful to see the size of the file in human readable terms, such as 1.7K or 35M. To show this information, simply use the -h
flag.
$ ls -lh -rw-r--r-- 1 bindi admin 3.1K 14 Apr 00:27 CODEOFCONDUCT.md -rw-r--r-- 1 bindi admin 1.1K 14 Apr 00:27 CONTRIBUTING.md drwxr-xr-x 7 bindi admin 238B 14 Apr 00:28 Cellar -rw-r--r-- 1 bindi admin 1.2K 14 Apr 00:27 LICENSE.txt drwxr-xr-x 10 bindi admin 340B 14 Apr 00:28 Library -rw-r--r-- 1 bindi admin 2.0K 14 Apr 00:27 README.md -rw-r--r-- 1 bindi admin 23K 14 Apr 00:27 SUPPORTERS.md drwxrwxr-x 23 root admin 782B 14 Apr 00:28 bin drwxr-xr-x 3 bindi admin 102B 14 Apr 00:28 etc drwxrwxr-x 30 root admin 1.0K 17 Mar 23:06 include drwxrwxr-x 22 root admin 748B 17 Mar 23:06 lib drwxr-xr-x 5 root wheel 170B 30 Mar 2013 man drwxr-xr-x 7 bindi admin 238B 14 Apr 00:28 opt drwxrwxr-x 10 root admin 340B 14 Apr 00:28 share
Sorting by Size ( -S
)
Another useful flag with ls
is -S
, which will sort the results by file size, instead of the default sorting by name
ls -lhS -rw-r--r-- 1 bindi admin 23K 14 Apr 00:27 SUPPORTERS.md -rw-r--r-- 1 bindi admin 3.1K 14 Apr 00:27 CODEOFCONDUCT.md -rw-r--r-- 1 bindi admin 2.0K 14 Apr 00:27 README.md -rw-r--r-- 1 bindi admin 1.2K 14 Apr 00:27 LICENSE.txt -rw-r--r-- 1 bindi admin 1.1K 14 Apr 00:27 CONTRIBUTING.md drwxrwxr-x 30 root admin 1.0K 17 Mar 23:06 include drwxrwxr-x 23 root admin 782B 14 Apr 00:28 bin drwxrwxr-x 22 root admin 748B 17 Mar 23:06 lib drwxr-xr-x 10 bindi admin 340B 14 Apr 00:28 Library drwxrwxr-x 10 root admin 340B 14 Apr 00:28 share drwxr-xr-x 7 bindi admin 238B 14 Apr 00:28 Cellar drwxr-xr-x 7 bindi admin 238B 14 Apr 00:28 opt drwxr-xr-x 5 root wheel 170B 30 Mar 2013 man drwxr-xr-x 3 bindi admin 102B 14 Apr 00:28 etc
Sorting by Last Modified Time ( -t
)
It can often be useful to sort your ls results by the last time the files were modified.
ls -lt drwxr-xr-x 7 bindi admin 238 14 Apr 00:28 Cellar drwxrwxr-x 23 root admin 782 14 Apr 00:28 bin drwxr-xr-x 7 bindi admin 238 14 Apr 00:28 opt drwxrwxr-x 10 root admin 340 14 Apr 00:28 share drwxr-xr-x 3 bindi admin 102 14 Apr 00:28 etc drwxr-xr-x 10 bindi admin 340 14 Apr 00:28 Library -rw-r--r-- 1 bindi admin 3160 14 Apr 00:27 CODEOFCONDUCT.md -rw-r--r-- 1 bindi admin 1103 14 Apr 00:27 CONTRIBUTING.md -rw-r--r-- 1 bindi admin 1241 14 Apr 00:27 LICENSE.txt -rw-r--r-- 1 bindi admin 2064 14 Apr 00:27 README.md -rw-r--r-- 1 bindi admin 23781 14 Apr 00:27 SUPPORTERS.md drwxrwxr-x 30 root admin 1020 17 Mar 23:06 include drwxrwxr-x 22 root admin 748 17 Mar 23:06 lib drwxr-xr-x 5 root wheel 170 30 Mar 2013 man
Reverse Sort ( -r
)
When you are listing a directory that contains many files, sorting with ls
is a great way to help quickly find the files or directories you are looking for. By default, ls
sorts all of its results alphabetically. Last two have shown how to sort results by size and by last modified time.
Using -r
flag we are able to reverse the result of ls
.
ls -lr drwxrwxr-x 10 root admin 340 14 Apr 00:28 share drwxr-xr-x 7 bindi admin 238 14 Apr 00:28 opt drwxr-xr-x 5 root wheel 170 30 Mar 2013 man drwxrwxr-x 22 root admin 748 17 Mar 23:06 lib drwxrwxr-x 30 root admin 1020 17 Mar 23:06 include drwxr-xr-x 3 bindi admin 102 14 Apr 00:28 etc drwxrwxr-x 23 root admin 782 14 Apr 00:28 bin -rw-r--r-- 1 bindi admin 23781 14 Apr 00:27 SUPPORTERS.md -rw-r--r-- 1 bindi admin 2064 14 Apr 00:27 README.md drwxr-xr-x 10 bindi admin 340 14 Apr 00:28 Library -rw-r--r-- 1 bindi admin 1241 14 Apr 00:27 LICENSE.txt drwxr-xr-x 7 bindi admin 238 14 Apr 00:28 Cellar -rw-r--r-- 1 bindi admin 1103 14 Apr 00:27 CONTRIBUTING.md -rw-r--r-- 1 bindi admin 3160 14 Apr 00:27 CODEOFCONDUCT.md
We can also use -r
flag with other options to reverse their sort order. For example, ls -lSr
will list the files by size with smaller files listed first.
Latest Post
- Dependency injection
- Directives and Pipes
- Data binding
- HTTP Get vs. Post
- Node.js is everywhere
- MongoDB root user
- Combine JavaScript and CSS
- Inline Small JavaScript and CSS
- Minify JavaScript and CSS
- Defer Parsing of JavaScript
- Prefer Async Script Loading
- Components, Bootstrap and DOM
- What is HEAD in git?
- Show the changes in Git.
- What is AngularJS 2?
- Confidence Interval for a Population Mean
- Accuracy vs. Precision
- Sampling Distribution
- Working with the Normal Distribution
- Standardized score - Z score
- Percentile
- Evaluating the Normal Distribution
- What is Nodejs? Advantages and disadvantage?
- How do I debug Nodejs applications?
- Sync directory search using fs.readdirSync