- Linux: Display File Properties via Terminal
- The ls Command
- Free eBook: Git Essentials
- The stat Command
- Conclusion
- How to Check and Set the Linux File Attributes on the Command Line
- How to Check and Set the Linux File Attributes on the Command Line
- Lsattr Command
- Chattr Command
- Conclusion
- About the author
- Prateek Jangid
Linux: Display File Properties via Terminal
We commonly need and want to know more about the files and directories that we are working with.
Most people know one of the ways, which is simply to Right Click > Properties on the wanted folder or file to view their properties. Though, for the more terminal-savvy, here’s how you can get the same (and more) information via the Terminal in Linux.
The ls Command
One of the most commonly used commands is the ls command, which lists all of the files and directories you’re located in, alongside their names.
Once you position yourself on a file path that you want, you can list all present files/folders via:
$ ls Folder_one large.jpg os.zip
Alternatively, you can supply a directory name to list files from, without having to move to that directory:
$ ls Folder_one cpfile.c Direct fileinfo.c
Though, these are just the names, and we can’t infer much from them. The ls command has several non-mandatory options which, when turned on, give us much more about these files when listing them.
You can use them alone, or by combining a few of them, depending on what exactly you are looking for.
Getting Details With the -l Option
The -l option will modify the ls command to give you much more detailed info, such as whether an entry is a file or directory, the size (usually in bytes), modified date and time, permissions, and more:
The result of this command should look something like:
total 15168 drwxrwxr-x 3 marija marija 4096 Jul 18 19:26 Folder_one -rwxrwxrwx 1 marija marija 164461 Sep 12 2017 large.jpg -rw-rw-r-- 1 marija marija 15354276 Oct 25 2018 os.zip
Here we can see that we have one directory (d in drwxrwxr-x ), named Folder_one , and 2 files. We can also see their owner and group, marija , and their size in bytes, as well as their modification date/time.
The number following the permissions is the number of links to the file or directory.
If you’d like to read more about permissions and how to change them via the terminal, read our Guide to Understanding chmod.
Note: You can get far with the -l flag, and by combining other flags with it, the ls command will get you far for this task.
Human-Readable -lh Option
If you want a more human-readable form, you can add the joined extension -lh or simply -h after the -l option:
$ ls -lh total 15M drwxrwxr-x 3 marija marija 4,0K Jul 18 19:26 Folder_one -rwxrwxrwx 1 marija marija 161K Sep 12 2017 large.jpg -rw-rw-r-- 1 marija marija 15M Oct 25 2018 os.zip
Now, we can see the size of files shown in KB, MB, GB, etc. instead of showing only in bytes, which can be very helpful. Though, that’s mostly the benefit you get from this flag.
Showing Hidden Files With the -la Option
Hidden files start with a dot symbol ( . ) and aren’t meant to be picked up by most GUI software, or the ls command. These are typically files that you don’t want to see, so this makes perfect sense.
On the other hand, if you’d specifically like to also include hidden files while listing the files of a directory — you can add the -a flag. Combining the -l flag and -a flag, you can print the hidden files alongside regular files — with their information:
$ ls -la total 15212 drwxr-xr-x 3 marija marija 4096 Jul 18 20:03 . drwxr-xr-x 29 marija marija 4096 Jul 18 20:13 .. drwxrwxr-x 3 marija marija 4096 Jul 18 19:26 Folder_one -rwxrwxrwx 1 marija marija 164461 Sep 12 2017 large.jpg -rw-rw-r-- 1 marija marija 15354276 Oct 25 2018 os.zip -rw-r--r-- 1 marija marija 12288 Jan 29 2018 .tekst.txt.swn -rw-r--r-- 1 marija marija 12288 Jan 29 2018 .tekst.txt.swo -rw-r--r-- 1 marija marija 12288 Jan 29 2018 .tekst.txt.swp
Displaying Block Size With the -s Option
Free eBook: Git Essentials
Check out our hands-on, practical guide to learning Git, with best-practices, industry-accepted standards, and included cheat sheet. Stop Googling Git commands and actually learn it!
The -s option displays the file’s size in blocks, rather than regular bytes:
$ ls -s total 15168 4 Folder_one 164 large.jpg 15000 os.zip
Note: Blocks are the smallest writable unit for your system and hardware.
Sorting Files by Size with the -lS Option
The -S flag, not to be confused with the lowercase -s from earlier, is a sorting flag. It sorts the files by size, in descending order:
$ ls -lS total 15168 -rw-rw-r-- 1 marija marija 15354276 Oct 25 2018 os.zip -rwxrwxrwx 1 marija marija 164461 Sep 12 2017 large.jpg drwxrwxr-x 3 marija marija 4096 Jul 18 19:26 Folder_one
Recursive Listing with the -R Option
If you want to list subdirectories, you’ll have to make a recursive ls call. The -R option makes this a really simple endeavor.
It will give you a tree representation of all of the files or directories that happen to be in a particular place:
$ ls -R directory Screenshot 2021-07-26 at 18.53.05.png file.txt Screenshot 2021-07-26 at 21.15.20.png mpl directory/dvp-articles: axis-off directory/dvp-articles/axis-off: app.py get-pip.py directory/mpl: mpl-chapter-2-1.png
Here, we’ve recursively called ls on the directory . Within it, there’s another directory — dvp-articles , and within it, yet another — axis-off . Within axis-off , there’s an app.py and get-pip.py .
Of course, you can chain the -l flag here as well, but the output might get a bit messy:
ls -lR directory [email protected] 1 david staff 369705 Jul 26 23:57 Screenshot 2021-07-26 at 23.57.34.png [email protected] 1 david staff 103861 Jul 27 00:05 Screenshot 2021-07-27 at 00.05.16.png drwxr-xr-x 3 david staff 96 Jun 17 18:00 dvp-articles -rw-r--r-- 1 david staff 0 Jun 25 17:11 file.txt drwxr-xr-x 3 david staff 96 Jul 16 20:19 mpl directory/dvp-articles: total 0 [email protected] 4 david staff 128 Jun 17 18:03 axis-off directory/dvp-articles/axis-off: total 3800 -rw-r--r-- 1 david staff 463 Jun 17 18:08 app.py -rw-r--r-- 1 david staff 1937800 Jun 17 18:03 get-pip.py directory/mpl: total 376 [email protected] 1 david staff 192506 Jul 16 20:18 mpl-chapter-2-1.png
Option -i
To use inode, we can add the -i flag:
$ ls -i 688193 Folder_one 680393 large.jpg 680392 os.zip
Of course, you can chain it with other flags such as:
$ ls -li 49323 [email protected] 3 david staff 96 Jun 16 20:39 Applications 34615 drwx------+ 15 david staff 480 Jul 27 00:05 Desktop .
The stat Command
The stat command is much more like the good old Right Click > Properties approach, because it formats all of the data and properties in a very readable format. It requires a filepath and isn’t as customizable as ls :
File: 'Folder_one' Size: 4096 Blocks: 8 IO Block: 4096 directory Device: 805h/2053d Inode: 688193 Links: 3 Access: (0775/drwxrwxr-x) Uid: ( 1000/ marija) Gid: ( 1000/ marija) Access: 2021-07-18 20:04:03.205402891 +0200 Modify: 2021-07-18 19:26:00.681976407 +0200 Change: 2021-07-18 20:03:51.617219116 +0200 Birth: -
For some, this is a much better solution than the ls command.
With stat , you can also format the printed info via —printf . You can filter out data such as the user name of the owner, group name of owner, or time of last status change, in even more human-readable form:
$ stat --printf='%U\n%G\n%z\n' Folder_one/
Which will in this case results in:
marija marija 2021-07-18 20:03:51.617219116 +0200
Notice that we are putting »\n» after each wanted property, so that each is printed in a new line.
Conclusion
Using the terminal, it’s easy to find file properties, using ls with any of its accepted flags or via stat .
In this short guide, we’ve taken a look at how to display file properties using Linux.
How to Check and Set the Linux File Attributes on the Command Line
In Linux, file attributes are additional metadata associated with a file or directory that provides additional information or functionality. You can view and change these attributes by utilizing the lsattr and chattr commands. Understanding and properly utilizing the file attributes can improve the security and performance of a Linux system by checking and setting the Linux file attributes, but many beginners don’t know how to do it in Linux. In this short guide, we will explain the simple ways to check and set the Linux file attributes on the command line.
How to Check and Set the Linux File Attributes on the Command Line
Here, we will give you a brief discussion on the two commands that you can try to check and set the file attributes from the terminal.
Lsattr Command
The lsattr command is used to display the file attributes of a given file or directory. The command output shows a series of letters corresponding to specific attributes. For instance, the “i” attribute makes the file immutable. It means that the file cannot be modified or deleted. The “d” attribute signifies that the file is a directory.
To check the attributes of a file or directory, simply type “lsattr” followed by its name in the terminal. Here’s an example:
This command outputs the attributes of the “TestFile.txt” file. The output looks something like the following image. We can see that the “e” attribute is set, indicating that the file will use extents to map the blocks on the disk.
Each letter in the output corresponds to a specific attribute:
Attribute | Full Form | Explanation |
---|---|---|
a | Append only | Using this mode, you can add more content to the file, but you cannot remove the content from the file. |
c | Compressed | The data that is written to the file is compressed automatically by the kernel, and it is uncompressed back at the time of reading. |
d | No dump | This attribute ensures that the file backup is not made in the backups where the dump is used. |
e | Extent format | For block mapping on the disk, the file uses extent. |
i | Immutable | Using this attribute, the file becomes immutable, which means that you are restricted from performing operations on the file. |
s | Secure deletion | You cannot recover the file after deletion using this option. |
t | No tail-merge | In this process, small data pieces that don’t fill the complete block are merged with similar data pieces from other files. |
u | Undeletable | The contents of the deleted files are saved. |
A | No atime update | The access timestamp of the Linux file is not updated when you access the file. |
D | Synchronous directory updates | Modifications made to the file are promptly stored on the disk before they reach the cache. |
S | Synchronous updates | The modifications made to the file are immediately written to the disk. |
Chattr Command
You can use the chattr command to alter the attributes of a specified file or directory. This command takes a + or – flag, followed by the attribute to be added or removed. For example, this command makes the “TestFile.txt” file immutable and can no longer be deleted or modified.
For example, to remove the immutable attribute, use the following command:
File Immutability
One common use case for the chattr +i command is to make a file or directory immutable to prevent accidental deletion or modification. This can be useful for important system files or for files that are frequently backed up.
Improves Performance
Another use case for the chattr +a command is to improve the performance of your file system. The “append only” attribute (a) can be added to the files to improve the performance on the filesystems that do not support the append-only mode. This attribute causes the filesystem to write the data to the end of the file only rather than changing the existing data, which can improve the performance in certain situations. To set a file to append-only mode, use the following command:
Secure Deletion
The chattr +s command can securely erase the file when it is deleted. This attribute overwrites the file with zeros before unlinking it, making it much more difficult for someone to recover the deleted data. To set a file for secure deletion, use this command:
Conclusion
File attributes are essential to Linux systems and can provide additional functionality or security. Understanding and properly utilizing the lsattr and chattr commands can help improve your Linux system’s overall performance and security. File immutability, append-only mode, and secure deletion are examples of how the file attributes can achieve specific goals. It is recommended to use these commands with caution and after correctly understanding the file attributes and their impact on the system.
About the author
Prateek Jangid
A passionate Linux user for personal and professional reasons, always exploring what is new in the world of Linux and sharing with my readers.