Skip to content
Related Articles
Get the best out of our app
GeeksforGeeks App
Open App

Related Articles

How to Find Out File Types in Linux

Improve Article
Save Article
Like Article
Improve Article
Save Article
Like Article

In Linux, everything is considered as a file. In UNIX, seven standard file types are regular, directory, symbolic link, FIFO special, block special, character special, and socket. In Linux/UNIX, we have to deal with different file types to manage them efficiently.

In Linux/UNIX, Files are mainly categorized into 3 parts:

  1. Regular Files
  2. Directory Files
  3. Special Files

The easiest way to find out file type in any operating system is by looking at its extension such as .txt, .sh, .py, etc. If the file doesn’t have an extension then in Linux we can use file utility.  In this article, we will demonstrate file command examples to determine a file type in Linux. 

To find out file types we can use the file command.

Syntax: file [OPTION…] [FILE…]

You can run the following command to verify the version of the file utility:

file -v

We can test a file type by typing the following command:

file file.txt

We can pass a list of files in one file and we can specify using the -f option as shown below:

cat file.txt
file -f file.txt

Using the -s option we can read the block or character special file. 

file -s /dev/sda

Using -b option will not prepend filenames to output lines

file -f GFG.txt

Using -F option will use string as separator instead of “:”.

file -F '#' GFG.txt

Using -L option will follow symlinks (default if POSIXLY_CORRECT is set):

file -L stdin

We can use the –extension option to print a slash-separated list of valid extensions for the file type found.

file --extension GFG.rar

For more information and usage options, you can use the following command:

man file

We can also use ls command to determine a type of file.


ls [OPTION]... [FILE]...

The following table shows the types of files in Linux and what will be output using ls and file command

File TypeCommand to create the FileLocated inThe file type using “ls -l” is denoted usingFILE command output
Regular FIletouchAny directory/FolderPNG Image data, ASCII Text, RAR archive data, etc
Directory FilemkdirIt is a directorydDirectory
Block Filesfdisk/devbBlock special
Character Filesmknod/devcCharacter special
Pipe Filesmkfifo/devpFIFO
Symbol Link Filesln/devlSymbol link to <linkname>
Socket Filessocket() system call/devsSocket

Types of File and Explanation

Regular Files

Regular files are ordinary files on a system that contains programs, texts, or data. It is used to store information such as text, or images. These files are located in a directory/folder. Regular files contain all readable files such as text files, Docx files, programming files, etc, Binary files, image files such as JPG, PNG, SVG, etc, compressed files such as ZIP, RAR, etc. 


Or we can use the “file *” command to find out the file type

Directory Files

The sole job of directory files is to store the other regular files, directory files, and special files and their related information. This type of file will be denoted in blue color with links greater than or equal to 2. A directory file contains an entry for every file and sub-directory that it houses. If we have 10 files in a directory, we will have 10 entries in the directory file. We can navigate between directories using the cd command

We can find out directory file by using the following command:

ls -l | grep ^d 

We can also use the file * command

Special Files

1. Block Files:

Block files act as a direct interface to block devices hence they are also called block devices.  A block device is any device that performs data Input and Output operations in units of blocks. These files are hardware files and most of them are present in /dev. 

We can find out block file by using the following command:

ls -l | grep ^b

We can use the file command also:

2. Character device files:

A character file is a hardware file that reads/writes data in character by character in a file. These files provide a serial stream of input or output and provide direct access to hardware devices. The terminal, serial ports, etc are examples of this type of file.

We can find out character device files by:

ls -l | grep ^c

We can use the file command to find out the type of file:

3. Pipe Files:

The other name of pipe is a “named” pipe, which is sometimes called a FIFO. FIFO stands for “First In, First Out” and refers to the property that the order of bytes going in is the same coming out. The “name” of a named pipe is actually a file name within the file system. This file sends data from one process to another so that the receiving process reads the data first-in-first-out manner.

We can find out pipe file by using the following command:

ls -l | grep ^p

We can use the file command to find out file type:

4. Symbol link files:

A symbol link file is a type of file in Linux which points to another file or a folder on your device. Symbol link files are also called Symlink and are similar to shortcuts in Windows. 

We can find out Symbol link file by using the following command:

ls -l | grep ^l

We can use the file command to find out file type:

5. Socket Files:

A socket is a special file that is used to pass information between applications and enables the communication between two processes. We can create a socket file using the socket() system call. A socket file is located in /dev of the root folder or you can use the find / -type s command to find socket files.

find / -type s 

We can find out Symbol link file by using the following command:

ls -l | grep ^s

We can use the file command to find out file type:

My Personal Notes arrow_drop_up
Last Updated : 23 Aug, 2021
Like Article
Save Article
Similar Reads
Related Tutorials