mdir 命令用于显示 MS-DOS 格式磁盘的目录内容,它是 mtools 工具集的一部分。mtools 是一组用于访问 MS-DOS 文件系统的工具,允许在 Linux 系统中直接操作 FAT 格式的磁盘、软盘、U盘等。
mdir [选项] [MS-DOS目录]
常用形式:
# 显示MS-DOS磁盘目录
mdir a:
# 显示特定目录
mdir a:/path/to/dir
# 显示Linux设备上的DOS分区
mdir /dev/fd0
# Ubuntu/Debian
sudo apt update
sudo apt install mtools
# CentOS/RHEL
sudo yum install mtools
# Fedora
sudo dnf install mtools
# Arch Linux
sudo pacman -S mtools
# openSUSE
sudo zypper install mtools
# macOS (Homebrew)
brew install mtools
# 检查mdir是否可用
which mdir
# 查看版本信息
mdir --version
# 显示帮助
mdir --help
| 设备名 | 说明 | 对应的Linux设备 |
|---|---|---|
a: |
第一个软盘驱动器 | /dev/fd0 |
b: |
第二个软盘驱动器 | /dev/fd1 |
c: |
第一个硬盘分区 | /dev/hda1 或 /dev/sda1 |
d: |
第二个硬盘分区 | /dev/hda2 或 /dev/sda2 |
z: |
自动检测的设备 | 自动映射 |
# 查看软盘内容(假设软驱为a:)
mdir a:
# 查看U盘内容(通常映射为c:或d:)
mdir c:
# 输出示例:
# Volume in drive C has no label
# Volume Serial Number is 2E2F-1901
# Directory for C:/
#
# LIB <DIR> 2019-01-15 10:20
# SYSTEM <DIR> 2019-01-15 10:20
# AUTOEXEC BAT 345 2019-01-15 10:25
# COMMAND COM 25276 2019-01-15 10:20
# CONFIG SYS 987 2019-01-15 10:25
# 5 files 265 KB allocated
# 1 234 KB free
# 查看DOS磁盘的WINDOWS目录
mdir c:/windows
# 查看子目录
mdir a:/data/documents
# 使用Linux设备路径
mdir /dev/sdb1
# 递归显示所有子目录
mdir -/ a:/
# 递归显示特定目录
mdir -/ c:/programs
# 输出示例:
# Directory for A:/DATA
# . <DIR> 2019-01-15 10:20
# .. <DIR> 2019-01-15 10:20
# DOC1 TXT 1234 2019-01-15 10:25
#
# Directory for A:/DATA/ARCHIVE
# . <DIR> 2019-01-15 10:20
# .. <DIR> 2019-01-15 10:20
# OLD DOC 5678 2019-01-15 10:25
# 宽格式输出(只显示文件名)
mdir -w a:
# 简明格式(每行一个文件)
mdir -b a:
# 显示所有文件(包括隐藏文件)
mdir -a a:
# 用引号括起文件名
mdir -Q a:
# 挂载并查看3.5英寸软盘
sudo mount /dev/fd0 /mnt/floppy
mdir a:
# 或者直接使用设备文件
mdir /dev/fd0
# 查看软盘中的特定文件类型
mdir -w a: | grep ".DOC"
# 递归查看软盘所有内容
mdir -/ a:/
# 查看DOS磁盘映像文件内容
mdir -i dosdisk.img
# 查看映像文件中的特定目录
mdir -i disk.img c:/windows/system
# 结合其他工具处理映像
mcopy -i disk.img c:/autoexec.bat ./backup/
# 创建磁盘映像列表
mdir -/ -i old_disk.img > disk_contents.txt
# 查看FAT格式U盘的内容
# 首先找到U盘设备
lsblk
# 使用mdir查看(假设U盘是/dev/sdb1)
mdir /dev/sdb1
# 或者配置mtools使用U盘
# 编辑 /etc/mtools.conf 添加:
# drive e: file="/dev/sdb1"
# 然后使用:
mdir e:
# 快速查看U盘文件列表
mdir -w /dev/sdb1
# 查看损坏磁盘的内容
mdir -f /dev/sdc1 # 快速模式,跳过错误检查
# 生成磁盘内容清单
mdir -/ -a /dev/sdb1 > disk_inventory.txt
# 检查隐藏文件
mdir -a a: | grep -v "<DIR>"
# 比较两个磁盘的内容
mdir -b a: > disk1.txt
mdir -b b: > disk2.txt
diff disk1.txt disk2.txt
为了正确使用 mdir 和其他 mtools 命令,可能需要配置 /etc/mtools.conf 或 ~/.mtoolsrc 文件:
# /etc/mtools.conf 示例配置
# 软盘驱动器
drive a: file="/dev/fd0" exclusive
drive b: file="/dev/fd1" exclusive
# U盘和移动设备
drive c: file="/dev/sda1"
drive d: file="/dev/sdb1"
drive e: file="/dev/sdc1"
# 默认配置
mtools_skip_check=1
mtools_fat_compatibility=1
# 字符集设置(用于中文文件名)
code_page=936
linestyle=windows
# 驱动器和设备映射
drive x: file="/dev/device_path"
# 跳过检查(提高速度)
mtools_skip_check=1
# FAT兼容性
mtools_fat_compatibility=1
# 代码页(字符集)
code_page=936 # 简体中文
code_page=950 # 繁体中文
code_page=437 # 美国英语
# 行尾格式
linestyle=unix # Unix格式
linestyle=dos # DOS格式
linestyle=windows # Windows格式
#!/bin/bash
# 自动备份DOS磁盘内容
DISK_DEVICE="/dev/fd0"
BACKUP_DIR="/backup/dos_disks"
DATE=$(date +%Y%m%d)
echo "开始备份DOS磁盘: $DISK_DEVICE"
# 创建备份目录
mkdir -p "$BACKUP_DIR/$DATE"
# 生成文件列表
echo "生成文件列表..."
mdir -/ -a "$DISK_DEVICE" > "$BACKUP_DIR/$DATE/filelist.txt"
# 复制所有文件
echo "复制文件..."
mcopy -s "$DISK_DEVICE"/* "$BACKUP_DIR/$DATE/"
echo "备份完成: $BACKUP_DIR/$DATE"
#!/bin/bash
# 分析DOS磁盘映像
IMAGE_FILE=$1
if [ -z "$IMAGE_FILE" ]; then
echo "用法: $0 磁盘映像文件"
exit 1
fi
echo "分析磁盘映像: $IMAGE_FILE"
echo "================================"
# 显示磁盘信息
echo "1. 磁盘内容:"
mdir -i "$IMAGE_FILE"
echo ""
echo "2. 文件统计:"
mdir -b -i "$IMAGE_FILE" | grep -v "<DIR>" | wc -l
echo ""
echo "3. 目录结构:"
mdir -/ -i "$IMAGE_FILE" | grep "Directory for"
echo ""
echo "4. 文件类型分布:"
mdir -b -i "$IMAGE_FILE" | grep -v "<DIR>" | \
awk -F. '{print $NF}' | sort | uniq -c | sort -nr
# 查找特定类型的文件
mdir -b a: | grep "\.EXE"
# 统计文件数量
mdir -b a: | grep -v "<DIR>" | wc -l
# 按日期排序文件
mdir -b a: | grep -v "<DIR>" | sort -k3
# 生成文件清单HTML报告
mdir -/ -a a: | \
awk 'BEGIN {print "<html><body><h1>Disk Contents</h1><pre>"}
{print}
END {print "</pre></body></html>"}' > disk_report.html
/etc/mtools.conf