在项目中,我们有时会希望清空某些示例或临时目录中的所有文件,但又希望保留文件夹结构(例如为了保持编译路径、Git 提交结构或方便后续添加新文件)。
本文以 Examples 目录为例,展示如何删除其中的所有文件,同时保留子目录结构。
场景示例
我们希望:
-
删除
Monocular、RGB-D、ROS、Stereo下的所有文件; -
但仍然保留这四个文件夹;
-
并且让 Git 继续跟踪这些空目录(默认 Git 不会提交空文件夹)。

步骤一:删除文件但保留目录
提前选择空白文件夹,用于远程拉取项目存储位置,并在该目录打开 Git Bash终端,并执行:
bash
#⚠️ -type f 表示仅删除文件,不会删除文件夹。
find 文件夹路径 -type f -delete

步骤二:保持空目录可被 Git 跟踪
Git 默认不会提交空文件夹,因此需要在每个空目录中放置一个占位文件。最常见的做法是使用 .gitkeep 文件(名称不固定,但业界约定俗成)。
执行以下命令:
bash
/*
1.-type d:查找目录;
2.-empty:只匹配空目录;
3.-exec touch {}/.gitkeep \;:在空目录中创建一个 .gitkeep 占位文件。
*/
find Examples -type d -empty -exec touch {}/.gitkeep \;
执行后,结构如下:

步骤三:提交到 Git 仓库
bash
git add Examples
git commit -m "Done and added .gitkeep to preserve structure"
git push

提示成功;
