Skip to content

Latest commit

 

History

History
343 lines (274 loc) · 7.48 KB

File metadata and controls

343 lines (274 loc) · 7.48 KB

Working with Directories in Linux

Managing directories efficiently is essential in Linux. The mkdir command helps create directories, while touch creates files. Wildcards ({}, *, []) simplify bulk operations.


1. Creating Directories

The mkdir command is used to create directories.

Basic Usage

  1. Create a single directory
    mkdir project
  2. Create multiple directories at once
    mkdir reports logs backups
  3. Create a directory inside another existing directory
    mkdir project/docs
    Note: project must exist before creating docs inside it.
  4. Create a directory structure including parent directories
    mkdir -p project/docs/2024
    • -p ensures that all parent directories are created if they do not exist.

Case Study: IT Department File Organization

The IT department of a company needs a structured way to store user logs, backups, and reports for different years.

Required Structure

IT_Department/
├── logs/
│   ├── 2022/
│   ├── 2023/
│   ├── 2024/
├── backups/
│   ├── weekly/
│   ├── monthly/
├── reports/
│   ├── q1/
│   ├── q2/
│   ├── q3/
│   ├── q4/
│   ├── annual/

Commands to Create This Structure

# 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}

Verifying the Structure

ls -R IT_Department
  • -R lists all directories and subdirectories.

2. Creating Files

The touch command is used to create empty files.

Basic Usage

  1. Create a single file
    touch report.txt
  2. Create multiple files at once
    touch log1.txt log2.txt log3.txt
  3. Create files inside directories
    touch logs/2024/system.log

Case Study: Automating Log File Creation

The IT team wants 30 daily log files for each month in 2024.

Command to Create Daily Logs

touch logs/2024/daily_log_{1..30}.txt
  • This creates daily_log_1.txt to daily_log_30.txt inside logs/2024/.

Verifying the Created Files

ls logs/2024/

3. Using Wildcards in Directory and File Management

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)

4. Removing Directories and Files

  1. Remove an empty directory
    rmdir backups/weekly
  2. Remove a directory and its contents
    rm -r IT_Department
  3. Remove files
    rm logs/2024/daily_log_*.txt

Case Study: University Data Management System

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.


Objective

  1. Create directories for each department (Students, Faculty, Administration).
  2. Create subdirectories for different types of files (Attendance, Marks, Salaries, Reports).
  3. Generate daily log files automatically for attendance and administration.
  4. Use wildcards to manage files efficiently.
  5. Delete old log files and directories when needed.

Required Structure

University_Data/
├── Students/
│   ├── Attendance/
│   ├── Marks/
│   ├── Reports/
├── Faculty/
│   ├── Salaries/
│   ├── Reports/
├── Administration/
│   ├── Budgets/
│   ├── Reports/
│   ├── Logs/
├── Backups/
│   ├── Daily/
│   ├── Monthly/

Commands to Create This Structure

Step 1: Create Main Directory and Subdirectories

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}

Verify the Structure

ls -R University_Data
  • -R lists all directories and subdirectories.

Step 2: Creating Log and Report Files

Create Monthly Attendance Logs (For Students)

touch Students/Attendance/attendance_{jan,feb,mar,apr,may,jun,jul,aug,sep,oct,nov,dec}_2024.txt

Create Daily Logs for Administration

touch Administration/Logs/admin_log_{1..30}.txt

Create Faculty Salary Reports

touch Faculty/Salaries/salary_{jan,feb,mar,apr,may,jun,jul,aug,sep,oct,nov,dec}_2024.txt

Verify Created Files

ls Students/Attendance/
ls Administration/Logs/

Step 3: Using Wildcards for Bulk Operations

List All Text Files in Any Directory

ls University_Data/**/*.txt
  • ** searches in subdirectories.

Copy All Reports to a Backup Directory

cp -r {Students,Faculty,Administration}/Reports Backups/Monthly/

Move Old Logs to Backup

mv Administration/Logs/admin_log_{1..15}.txt Backups/Daily/

Delete Specific Log Files

rm Administration/Logs/admin_log_*.txt

Step 4: Removing Directories and Files

Remove an Empty Directory

rmdir Backups/Daily

Remove a Directory with Contents

rm -r University_Data

Final Verification

ls -R University_Data
  • Ensures everything is organized correctly.

Case Study 3: Directory Structure Example

Directory Structure:

/
└── home
    └── akshay
        ├── X
        │   ├── X1
        │   │   ├── X11
        │   │   └── X12
        │   └── X2
        └── Y
            ├── Y1
            │   ├── Y11
            │   └── Y12
            └── Y2

Steps:

  1. Create the x directory and its subdirectories:

    mkdir x
    cd x
    mkdir x1 x2
    cd x1
    mkdir x11 x12
  2. To create nested directories:

    mkdir -p x/x1/x1{1,2}
    mkdir -p y/y1/y1{1,2}

Displaying Tree Structure:

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 files

Case Study 4: Creating Directories with Files

Create 5 directories (dir6, dir7, dir8, dir9, dir10), and in each directory, create files a.txt, b.txt, c.txt, and d.txt:

  1. To create the directories:

    mkdir dir{6..10}
  2. To create the files:

    touch dir{6..10}/{a..d}.txt

Note: *, [], {} are called wildcard characters, which can be used in many commands.