Understanding UNIX / Linux filesystem directories
You use DNS (domain name system) to translate between domain names and IP addresses.
Similarly files are referred by file name, not by inode number. So what is the purpose of a directory? You can groups the files according to your usage. For example all configuration files are stored under /etc directory. So the purpose of a directory is to make a connection between file names and their associated inode number. Inside every directory you will find out two directories . (current directory) and .. (pointer to previous directory i.e. the directory immediately above the one I am in now). The .. appears in every directory except for the root directory.
Directory
A directory contained inside another directory is called a subdirectory. At the end the directories form a tree structure. Use tree command to see directory tree structure:
$ tree /etc | less
Again a directory has an inode just like a file. It is a specially formatted file containing records which associate each name with an inode number. Please note the following limitation of directories under ext2/3 file system:
- There is an upper limit of 32768 subdirectories in a single directory.
- There is a "soft" upper limit of about 10-15k files in a single directory
However according to official documentation of ext2/3 file system points that “Using a hashed directory index (which is under development) allows 100k-1M+ files in a single directory without performance problems'. Here are my two favorite alias commands related to directory :
$ alias ..='cd ..'
alias d='ls -l | grep -E "^d"'

Well I'm sure all of you know the basic commands related to directories and files managment. Click above (or here) to see summery of all basic commands related to directories and files managment. See interesting discussion about soft links and directories. This is 6th part of "Understanding UNIX/Linux file system, continue reading rest of the Understanding Linux file system series (this is part IV):
- Part I - Understanding Linux superblock
- Part II - Understanding Linux superblock
- Part III - An example of Surviving a Linux Filesystem Failures
- Part IV - Understanding filesystem Inodes
- Part V - Understanding filesystem directories
- Part VI - Understanding UNIX/Linux symbolic (soft) and hard links
- Part VII - Why isn't it possible to create hard links across file system boundaries?
You may also be interested in other helpful articles:
- Comparison Linux vs UNIX file systems
- Understanding UNIX / Linux symbolic (soft) and hard links
- Understanding UNIX / Linux filesystem Superblock
- Why isn’t it possible to create hard links across file system boundaries?
- Surviving a Linux Filesystem Failures
Discussion on This Article:
Leave a Reply
We encourage your comments, and suggestions. But please stay on topic, be polite, and avoid spam. Thank you very much for stopping by our site!
Tags: directory, internal_data_structures, linux_filesystem, metadata_structure, superblock, tree_command, unix_filesystem



Thanks alot.This article is very useful for my project call “Describe the files and directory model in Linux?UNIX”
Nguyen,
Glad to know article is helping out.
Appreciate your feedback.
Hi,
Thx for the useful information abt the ext2 filesystem. What I want to find out is, whether any website is avbl for finding the detailed structure of a superblock ? i.e., all the fields that the superblocks stores, their valid contents, when are they changed, how r they affected when a file is changed etc…
Thanks a lot in advance.
-Swapnil
Heya,
the correct command to go back to previous directory (as seen in table graphic) should be
cd -
not
cd ..
cd .. go to parent directory
cd - return to previous directory