- How to Sort Output of ‘ls’ Command By Last Modified Date and Time
- Linux Basic ls Commands
- Sort Files Based on Time and Date
- The Linux LS Command – How to List Files in a Directory + Option Flags
- Prerequisites
- The Linux ls Command
- How to list Files in a Directory with Options
- List files in the current working directory
- List files in another directory
- List files in the root directory
- List files in the parent directory
- List files in the user’s home directory (/home/user)
- List only directories
- List files with subdirectories
- List files recursively
- List files with their sizes
- List files in long format
- List files in long format with readable file sizes
- List files including hidden files
- List files in long format including hidden files
- List files and sort by date and time
- List files and sort by file size
- List files and output the result to a file
- Conclusion
- Linux sorting «ls -al» output by date
- 3 Answers 3
How to Sort Output of ‘ls’ Command By Last Modified Date and Time
One of the commonest things a Linux user will always do on the command line is listing the contents of a directory. As we may already know, ls and dir are the two commands available on Linux for listing directory content, with the former being more popular and in most cases, preferred by users.
When listing directory contents, the results can be sorted based on several criteria such as alphabetical order of filenames, modification time, access time, version and file size. Sorting using each of these file properties can be enabled by using a specific flag.
In this brief ls command guide, we will look at how to sort the output of ls command by last modification time (date and time).
Let us start by executing some basic ls commands.
Linux Basic ls Commands
1. Running ls command without appending any argument will list current working directory contents.
2. To list contents of any directory, for example /etc directory use:
3. A directory always contains a few hidden files (at least two), therefore, to show all files in a directory, use the -a or —all flag:
4. You can as well print detailed information about each file in the ls output, such as the file permissions, number of links, owner’s name and group owner, file size, time of last modification and the file/directory name.
This is activated by the -l option, which means a long listing format as in the next screenshot:
Sort Files Based on Time and Date
5. To list files in a directory and sort them last modified date and time, make use of the -t option as in the command below:
6. If you want a reverse sorting files based on date and time, you can use the -r option to work like so:
We will end here for now, however, there is more usage information and options in the ls command, so make it a point to look through it or any other guides offering ls command tricks every Linux user should know or use sort command. Last but not least, you can reach us via the feedback section below.
The Linux LS Command – How to List Files in a Directory + Option Flags
Bolaji Ayodeji
Since the creation of Unix in the 1970s, a lot of operating systems have used it as their foundation. Many of these operating systems failed, while others succeeded.
Linux is one of the most popular Unix based operating systems. It’s open source, and is used all over the world across many industries.
One amazing feature of the Linux operating system is the Command Line Interface (CLI) which allows users to interact with their computer from a shell. The Linux shell is a REPL (Read, Evaluate, Print, Loop) environment where users can enter a command and the shell runs it and returns a result.
The ls command is one of the many Linux commands that allow a user to list files or directories from the CLI.
In this article, we’ll go in depth on the ls command and some of the most important flags you’ll need day-to-day.
Prerequisites
- A computer with directories and files
- Have one of the Linux distros installed
- Basic knowledge of navigating around the CLI
- A smile on your face 🙂
The Linux ls Command
The ls command is used to list files or directories in Linux and other Unix-based operating systems.
Just like you navigate in your File explorer or Finder with a GUI, the ls command allows you to list all files or directories in the current directory by default, and further interact with them via the command line.
Launch your terminal and type ls to see this in action:
How to list Files in a Directory with Options
The ls command also accepts some flags (also known as options) which are additional information that changes how files or directories are listed in your terminal.
In other words, flags change how the ls command works:
PS: The word contents used in throughout the article refers to the files and directories being listed, not the actual contents of the files/directories ?
List files in the current working directory
Type the ls command to list the contents of the current working directory:
List files in another directory
Type the ls [directory path here] command to list the contents of another directory:
List files in the root directory
Type the ls / command to list the contents of the root directory:
List files in the parent directory
Type the ls .. command to list the contents of the parent directory one level above. Use ls ../.. for contents two levels above:
List files in the user’s home directory (/home/user)
Type the ls ~ command to list the contents in the users’s home directory:
List only directories
Type the ls -d */ command to list only directories:
List files with subdirectories
Type the ls * command to list the contents of the directory with it’s subdirectories:
List files recursively
Type the ls -R command to list all files and directories with their corresponding subdirectories down to the last file:
If you have a lot of files, this can take a very long time to complete as every single file in each directory will be printed out. You can instead specify a directory to run this command in, like so: ls Downloads -R
List files with their sizes
Type the ls -s command (the s is lowercase) to list files or directories with their sizes:
List files in long format
Type the ls -l command to list the contents of the directory in a table format with columns including:
- content permissions
- number of links to the content
- owner of the content
- group owner of the content
- size of the content in bytes
- last modified date / time of the content
- file or directory name
List files in long format with readable file sizes
Type the ls -lh command to list the files or directories in the same table format above, but with another column representing the size of each file/directory:
Note that sizes are listed in bytes (B), megabytes (MB), gigabytes (GB), or terabytes (TB) when the file or directory’s size is larger than 1024 bytes.
List files including hidden files
Type the ls -a command to list files or directories including hidden files or directories. In Linux, anything that begins with a . is considered a hidden file:
List files in long format including hidden files
Type the ls -l -a or ls -a -l or ls -la or ls -al command to list files or directories in a table format with extra information including hidden files or directories:
List files and sort by date and time
Type the ls -t command to list files or directories and sort by last modified date in descending order (biggest to smallest).
You can also add a -r flag to reverse the sorting order like so: ls -tr :
List files and sort by file size
Type the ls -S (the S is uppercase) command to list files or directories and sort by size in descending order (biggest to smallest).
You can also add a -r flag to reverse the sorting order like so: ls -Sr :
List files and output the result to a file
Type the ls > output.txt command to print the output of the preceding command into an output.txt file. You can use any of the flags discussed before like -la — the key point here is that the result will be outputted into a file and not logged to the command line.
Then you can use the file as you see fit, or log the contents of the file with cat output.txt :
Conclusion
There are tons of other commands and combinations you can explore to list out files and directories based on your needs. One thing to remember is the ability to combine multiple commands together at once.
Imagine you want to list a file in long format, including hidden files, and sort by file size. The command would be ls -alS , which is a combination of ls -l , ls -a , and ls -S .
If you forget any command or are unsure about what to do, you can run ls —help or man ls which will display a manual with all possible options for the ls command:
Linux sorting «ls -al» output by date
I want to sort the output of the «ls -al» command according to date. I am able to easily do that for one column with command:
$ ls -al | sort -k6 -M -r | sort -k7 -r
prints out results I do not understand. The final goal would be to see all the files from the most recently modified (or v.v.). Here is the attached example for the data to be sorted and the command used:
See mywiki.wooledge.org/ParsingLs — in short, ls is not meant for programmatic consumption, cannot be reliably used from scripts (particularly when trying to support more than a single platform, implementation and locale), and otherwise should not be (ab)used in this way.
@arco444 — thanks, did not know about the «t» flag. However, the sort command knowledge is usefull in a more general context, so the question is still valuable. CharlesDuffy — noted, thanks 🙂
@MindaugasBernatavičius: For example, you might have ls output stored in a file, and it could be useful to sort that file by timestamp without re-invoking ls . But Charles Duffy is right: ls output isn’t meant to be processed automatically. If you have GNU Coreutils, stat —format=. gives you better control over what’s displayed.
3 Answers 3
With sort, if you specify -k6 , the key starts at field 6 and extends to the end of the line. To truncate it and only use field 6, you should specify -k6,6 . To sort on multiple keys, just specify -k multiple times. Also, you need to apply the M modifier only to the month, and the n modifier to the day. So:
ls -al | sort -k 6,6M -k 7,7n -r
Do note Charles’ comment about abusing ls though. Its output cannot be reliably parsed. A good demonstration of this is that the image you’ve posted shows the month/date in columns 4 and 5, so it’s not clear why you want to sort on columns 6 and 7.