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 -
-empty
filtra diretórios que já contêm algo -
-not -path "./.git/*"
garante que nenhum arquivo seja criado dentro de.git
directory -
-exec touch {}/.gitkeep \;
cria o arquivo.gitkeep
vazio 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