如何递归移动嵌套文件,修复app目录的多层嵌套结构
恢复嵌套的app目录结构到预期层级
问题描述
原本预期的app目录结构为:
app ├── export │ ├── some-unique-filename │ ├── another-unique-filename │ └── ... └── import ├── some-unique-filename ├── another-unique-filename └── ...
但因rsync脚本错误,导致app目录被多次复制到自身内部,形成多层嵌套结构:
app ├── app │ ├── app │ │ └── ... etc. │ ├── export │ │ └── another-unique-filename │ └── import │ └── another-unique-filename ├── export │ └── some-unique-filename └── import └── some-unique-filename
需要将嵌套结构恢复为仅一层的预期结构。
解决方案
1. 备份目录(必备步骤)
操作前务必备份整个app目录,防止数据丢失:
cp -a app app_backup
2. 移动嵌套目录中的文件到顶层对应目录
使用find命令遍历所有嵌套app子目录下的export/import文件,将它们移动到顶层app的export和import目录中(-n参数避免意外覆盖文件):
# 移动所有嵌套app下export目录的文件到顶层export find app -type f -path "*/app/export/*" -exec mv -n {} app/export/ \; # 移动所有嵌套app下import目录的文件到顶层import find app -type f -path "*/app/import/*" -exec mv -n {} app/import/ \;
提示:可以先将命令中的
-exec mv -n {} app/export/ \;替换为
3. 删除所有嵌套的app子目录
使用find命令从最深层级开始删除所有嵌套的app子目录(-depth参数确保先删除深层目录,避免父目录已被删除导致的错误):
find app -type d -name "app" -depth -exec rm -rf {} \;
提示:同样可以先将
-exec rm -rf {} \;替换为
4. 验证结果
执行tree app命令查看目录结构,确认已恢复为预期的单层结构。
内容的提问来源于stack exchange,提问作者Marc Bush
相关产品推荐
相关产品推荐

