mdel(MS-DOS delete的缩写)命令主要用于:
mdel是mtools工具集的一部分,需要先安装mtools:
# Ubuntu/Debian
sudo apt-get install mtools
# CentOS/RHEL
sudo yum install mtools
# macOS
brew install mtools
mdel [选项] 文件...
| 选项 | 说明 |
|---|---|
| -v | 详细模式,显示删除的文件名 |
| -Q | 安静模式,不显示警告信息 |
| -D | 调试模式,显示调试信息 |
| --help | 显示帮助信息 |
mtools使用配置文件定义DOS驱动器到Linux设备的映射:
# 查看或编辑mtools配置文件
cat ~/.mtoolsrc
# 或
cat /etc/mtools.conf
# 典型配置示例
drive a: file="/dev/fd0"
drive c: file="/dev/sda1"
drive d: file="/path/to/dos.img"
drive e: file="/dev/sdb1"
删除DOS文件系统中的单个文件:
mdel a:temp.txt
一次删除多个文件:
mdel a:file1.txt a:file2.txt a:file3.txt
使用通配符批量删除文件:
# 删除所有.txt文件
mdel a:*.txt
# 删除所有临时文件
mdel c:*.tmp
# 删除所有备份文件
mdel d:*.*~
使用 -v 选项显示删除的文件:
mdel -v a:*.bak
删除 a:file1.bak
删除 a:file2.bak
删除 a:file3.bak
mdel可以删除只读文件(与DOS不同):
# 即使文件有只读属性也能删除
mdel a:readonly.txt
删除DOS磁盘镜像文件中的文件:
# 首先在mtools.conf中配置镜像文件
# drive i: file="/path/to/dos_disk.img"
# 然后删除镜像文件中的文件
mdel i:unwanted.exe
在不同DOS驱动器间删除文件:
mdel a:oldfile.txt c:tempfile.tmp d:backup.bak
先查看属性再决定是否删除:
# 查看文件属性
mattrib a:*.*
# 删除特定文件
mdel a:unwanted.doc
清理DOS系统中的临时文件:
# 删除所有临时文件
mdel -v c:*.tmp
mdel -v c:*.temp
mdel -v c:*.*~
删除已卸载软件的残留文件:
# 删除特定软件的残留文件
mdel c:\oldapp\*.*
mdel c:\windows\system\oldapp.*
清理磁盘空间,删除不必要的大文件:
# 先查看大文件
mdir c:\ | grep -i "\.exe"
# 删除不需要的大文件
mdel c:\games\*.exe
维护虚拟机中的DOS磁盘:
# 配置虚拟机磁盘镜像
echo 'drive v: file="/vm/dos_c.vmdk"' >> ~/.mtoolsrc
# 清理虚拟机磁盘
mdel v:*.chk
mdel v:*.old
使用mdir先查看要删除的文件:
# 先查看匹配的文件
mdir a:*.tmp
# 确认无误后再删除
mdel a:*.tmp
始终使用详细模式以确认删除操作:
mdel -v a:*.bak
在删除前备份重要文件:
# 备份重要文件
mcopy a:important.doc /backup/
# 然后再删除
mdel a:*.doc
| 命令 | 功能 |
|---|---|
mattrib |
修改DOS文件属性 |
mcopy |
在Unix和DOS系统间复制文件 |
mdir |
显示DOS目录内容 |
mtype |
显示DOS文件内容 |
mformat |
格式化DOS磁盘 |
mlabel |
管理DOS磁盘卷标 |
mmd |
创建DOS目录 |
mrd |
删除DOS目录 |
mren |
重命名DOS文件 |
创建脚本批量清理DOS文件:
#!/bin/bash
# dos_cleanup.sh - DOS系统清理脚本
DRIVE=$1
echo "开始清理驱动器 $DRIVE"
# 删除临时文件
echo "删除临时文件..."
mdel -v $DRIVE\*.tmp
mdel -v $DRIVE\*.temp
mdel -v $DRIVE\*.*~
# 删除备份文件
echo "删除备份文件..."
mdel -v $DRIVE\*.bak
mdel -v $DRIVE\*.old
# 删除日志文件(保留最近3个)
echo "清理日志文件..."
mdir $DRIVE\*.log | tail -n +4 | awk '{print $NF}' | while read logfile; do
mdel -v "$DRIVE\\$logfile"
done
echo "清理完成"
创建安全的删除函数:
# 在.bashrc中定义安全删除函数
safedel() {
if [ -z "$1" ]; then
echo "用法: safedel 驱动器:文件模式"
return 1
fi
echo "将要删除的文件:"
mdir "$1"
read -p "确认删除这些文件? (y/N): " confirm
if [ "$confirm" = "y" ] || [ "$confirm" = "Y" ]; then
mdel -v "$1"
echo "删除完成"
else
echo "取消删除"
fi
}
# 使用示例: safedel a:*.tmp
结合Linux find命令处理多个磁盘镜像:
# 查找所有DOS磁盘镜像并清理
find /vm -name "*.img" -o -name "*.vmdk" | while read image; do
echo "处理镜像: $image"
# 临时配置驱动器
echo "drive x: file=\"$image\"" > /tmp/mtools_temp.conf
# 清理临时文件
mdel -c /tmp/mtools_temp.conf x:*.tmp
done
| 问题 | 解决方案 |
|---|---|
| "Cannot initialize 'A:'" 错误 | 检查mtools配置文件中驱动器的定义 |
| "File not found" 错误 | 确认文件路径和名称正确,DOS使用8.3文件名格式 |
| 权限被拒绝 | 检查磁盘是否写保护,或使用管理员权限 |
| 无法删除只读文件 | mdel应该能删除只读文件,如不能先使用mattrib移除只读属性 |
| 通配符不工作 | 确认通配符语法正确,DOS使用*和?作为通配符 |
-v 选项以确认删除的文件