Managing directories efficiently is essential in Linux. The mkdir command helps create directories, while touch creates files. Wildcards ({}, *, []) simplify bulk operations.
The mkdir command is used to create directories.
- Create a single directory
mkdir project
- Create multiple directories at once
mkdir reports logs backups
- Create a directory inside another existing directory
Note:
mkdir project/docs
projectmust exist before creatingdocsinside it. - Create a directory structure including parent directories
mkdir -p project/docs/2024
-pensures that all parent directories are created if they do not exist.
The IT department of a company needs a structured way to store user logs, backups, and reports for different years.
IT_Department/
├── logs/
│ ├── 2022/
│ ├── 2023/
│ ├── 2024/
├── backups/
│ ├── weekly/
│ ├── monthly/
├── reports/
│ ├── q1/
│ ├── q2/
│ ├── q3/
│ ├── q4/
│ ├── annual/
# Create the main directory
mkdir IT_Department
cd IT_Department
# Create logs directories for different years
mkdir -p logs/{2022,2023,2024}
# Create backup directories
mkdir -p backups/{weekly,monthly}
# Create report directories for different quarters and annual reports
mkdir -p reports/{q1,q2,q3,q4,annual}ls -R IT_Department-Rlists all directories and subdirectories.
The touch command is used to create empty files.
- Create a single file
touch report.txt
- Create multiple files at once
touch log1.txt log2.txt log3.txt
- Create files inside directories
touch logs/2024/system.log
The IT team wants 30 daily log files for each month in 2024.
touch logs/2024/daily_log_{1..30}.txt- This creates
daily_log_1.txttodaily_log_30.txtinsidelogs/2024/.
ls logs/2024/Wildcards help perform bulk operations.
| Wildcard | Description | Example |
|---|---|---|
{} |
Expands multiple values | mkdir {HR,Finance,IT} |
* |
Matches any number of characters | ls *.txt (Lists all .txt files) |
? |
Matches a single character | rm log?.txt (Deletes log1.txt, log2.txt, etc.) |
[] |
Matches a range of characters | ls file[1-3].txt (Lists file1.txt, file2.txt, file3.txt) |
- Remove an empty directory
rmdir backups/weekly
- Remove a directory and its contents
rm -r IT_Department
- Remove files
rm logs/2024/daily_log_*.txt
A university IT department needs to organize its data storage system for students, faculty, and administrative records. They want a structured system with logs, reports, and backups while ensuring efficient file management.
- Create directories for each department (Students, Faculty, Administration).
- Create subdirectories for different types of files (Attendance, Marks, Salaries, Reports).
- Generate daily log files automatically for attendance and administration.
- Use wildcards to manage files efficiently.
- Delete old log files and directories when needed.
University_Data/
├── Students/
│ ├── Attendance/
│ ├── Marks/
│ ├── Reports/
├── Faculty/
│ ├── Salaries/
│ ├── Reports/
├── Administration/
│ ├── Budgets/
│ ├── Reports/
│ ├── Logs/
├── Backups/
│ ├── Daily/
│ ├── Monthly/
mkdir University_Data
cd University_Data
# Create department directories
mkdir Students Faculty Administration Backups
# Create subdirectories
mkdir -p Students/{Attendance,Marks,Reports}
mkdir -p Faculty/{Salaries,Reports}
mkdir -p Administration/{Budgets,Reports,Logs}
mkdir -p Backups/{Daily,Monthly}ls -R University_Data-Rlists all directories and subdirectories.
touch Students/Attendance/attendance_{jan,feb,mar,apr,may,jun,jul,aug,sep,oct,nov,dec}_2024.txttouch Administration/Logs/admin_log_{1..30}.txttouch Faculty/Salaries/salary_{jan,feb,mar,apr,may,jun,jul,aug,sep,oct,nov,dec}_2024.txtls Students/Attendance/
ls Administration/Logs/ls University_Data/**/*.txt**searches in subdirectories.
cp -r {Students,Faculty,Administration}/Reports Backups/Monthly/mv Administration/Logs/admin_log_{1..15}.txt Backups/Daily/rm Administration/Logs/admin_log_*.txtrmdir Backups/Dailyrm -r University_Datals -R University_Data- Ensures everything is organized correctly.
/
└── home
└── akshay
├── X
│ ├── X1
│ │ ├── X11
│ │ └── X12
│ └── X2
└── Y
├── Y1
│ ├── Y11
│ └── Y12
└── Y2
-
Create the
xdirectory and its subdirectories:mkdir x cd x mkdir x1 x2 cd x1 mkdir x11 x12
-
To create nested directories:
mkdir -p x/x1/x1{1,2} mkdir -p y/y1/y1{1,2}
akshay@Ubuntu:~$ tree /F x
/F [error opening dir]
x
└── x1
├── x11
└── x12
3 directories, 0 files
akshay@Ubuntu:~$ tree /F y
/F [error opening dir]
y
└── y1
├── y11
└── y12
3 directories, 0 filesCreate 5 directories (dir6, dir7, dir8, dir9, dir10), and in each directory, create files a.txt, b.txt, c.txt, and d.txt:
-
To create the directories:
mkdir dir{6..10} -
To create the files:
touch dir{6..10}/{a..d}.txt
Note: *, [], {} are called wildcard characters, which can be used in many commands.