核心命令:mv
mv
(move)是Linux移动文件/目录的基础命令,语法为:
mv [选项] 源目录1 源目录2 ... 目标路径
高效移动多个文件夹的方法
方法1:通配符匹配
通过通配符批量选择名称匹配的文件夹:
mv dir_* /target/path/ # 移动所有以"dir_"开头的文件夹 mv project_{A,B,C} /backup/ # 移动project_A、project_B、project_C
注意:
- 匹配任意字符(包括空字符)
- 匹配单个字符(如
dir_202?
匹配dir_2025
) - 扩展多个精确名称(逗号间无空格)
方法2:结合 find
命令
按条件(如名称、修改时间)定位文件夹后移动:
find . -maxdepth 1 -type d -name "temp_*" -exec mv {} /target/path/ \;
参数解析:
-maxdepth 1
:仅搜索当前目录-type d
:只查找目录-exec ... \;
:对每个结果执行mv
命令
方法3:循环遍历移动
对复杂场景(如条件筛选),使用for
循环:
for dir in */ ; do # 遍历所有子目录 if [[ -d "$dir" && "$dir" == *backup* ]]; then mv "$dir" /archive/ fi done
关键注意事项
-
覆盖风险:
- 若目标路径存在同名文件夹,
mv
会静默覆盖(无警告)。 - 建议添加
-i
参数交互确认:mv -i dir_* /target/path/ # 覆盖前提示
- 若目标路径存在同名文件夹,
-
权限问题:
- 需对源目录有读权限,对目标路径有写权限。
- 权限不足时用
sudo
(谨慎操作):sudo mv /restricted/dir_* /target/
-
路径验证:
- 移动前用
ls
检查通配符匹配结果:ls dir_* # 确认匹配的目录列表
- 确保目标路径存在:
mkdir -p /target/path # 自动创建目标路径
- 移动前用
-
跨文件系统移动:
- 跨磁盘/分区移动等同于“复制+删除”,耗时较长。
- 大文件建议用
rsync
(保留属性):rsync -av --remove-source-files dir_* /target/ # 移动后删除源文件
操作验证
移动后立即检查结果:
ls /target/path/ # 确认目录已存在 ls -l /original/path/ # 确认源目录已移除
总结建议
- 简单场景:用通配符(
mv dir_* /target/
) - 条件筛选:用
find
或循环 - 防误操作:
- 测试通配符匹配:
ls
预览结果 - 关键数据提前备份
- 使用
-i
避免覆盖
- 测试通配符匹配:
引用说明基于Linux核心工具(GNU coreutils)的官方文档及Unix文件管理最佳实践,参考来源包括:
- GNU
mv
命令手册(https://www.gnu.org/software/coreutils/manual/)- Linux Filesystem Hierarchy Standard(FHS 3.0)
- Bash脚本编程权威指南(Bash Reference Manual)
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/10016.html