Adicione um arquivo a cada subdiretório recursivamente

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 dimprime 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 xargsparte era a mais complicada. Eu queria emitir um touchcomando para criar um delete.mearquivo vazio dentro de cada um dos diretórios não git. xargspermite que você crie um espaço reservado com o -Isinalizador, 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.mee xargsemitir esse comando para cada diretório retornado finde filtrado por grep, substituindo o {}pelo caminho do diretório na frente do delete.menome do arquivo.