De blog de Ryan Armstrong , veja como você faz isso
find . -type d -empty -not -path "./.git/*" -exec touch {}/.gitkeep \;
-
find . -type d(recursivamente) procura por diretórios sob o caminho atual -
-emptyfiltra diretórios que já contêm algo -
-not -path "./.git/*"garante que nenhum arquivo seja criado dentro de.gitdirectory -
-exec touch {}/.gitkeep \;cria o arquivo.gitkeepvazio em cada diretório correspondente aos critérios acima
A estrutura resultante se parece com
$ tree -a -I .git
.
├── .gitignore
├── README.md
├── pom.xml
└── src
├── main
│ ├── java
│ │ └── .gitkeep
│ └── resources
│ └── .gitkeep
└── test
├── java
│ └── .gitkeep
└── resources
└── .gitkeep
7 directories, 7 files