Eu estava criando uma estrutura de diretório para um novo projeto em que muitas das pastas estavam inicialmente vazias. Como você não pode verificar diretórios vazios no git , precisei iterar por todos os diretórios que acabei de criar e adicionar um arquivo de espaço reservado vazio.
Minhas habilidades de linha de comando não são muito afiadas, mas depois de pesquisar bastante no Google, consegui construir algo que funcionou:
find . -type d | grep -v ".git" | xargs -I {} touch {}/delete.me
A primeira parte find . -type d
imprime uma lista simples de cada diretório dentro do atual. É um ótimo lugar para começar. Em seguida, devemos grep -v ".git"
remover todos os diretórios relacionados ao git.
A xargs
parte era a mais complicada. Eu queria emitir um touch
comando para criar um delete.me
arquivo vazio dentro de cada um dos diretórios não git. xargs
permite que você crie um espaço reservado com o -I
sinalizador, que será substituído pelos argumentos que são inseridos. Nesse caso, estou usando a string "{}"
como espaço reservado.
Agora, posso executar touch {}/delete.me
e xargs
emitir esse comando para cada diretório retornado find
e filtrado por grep
, substituindo o {}
pelo caminho do diretório na frente do delete.me
nome do arquivo.