Para a seguinte estrutura de árvore:
.
└── dir1
└── dir2
└── dir3
O que seria uma maneira simples de criar um arquivo (pode estar vazio), para cada diretório, para que a árvore resultante se pareça com:
.
├── dir1
│ ├── dir2
│ │ ├── dir3
│ │ │ └── README
│ │ └── README
│ └── README
└── README
Você pode fazer isso com find:
Explicação
-mindepth 1
irá definir a profundidade mínima, para evitar incluir o diretório atual-type d
só encontrará diretórios-exec
vai executar um comando{}
contém o caminho do diretório encontradoSe você quiser usar apenas comandos de shell internos:
Explicação
for
fará um loop sobre cada elemento em*
, significando todos os arquivos no diretório atual.dir
conterá o elemento atual durante o loop.if [ -d $dir ]
verifica se o elemento é um diretório e só entãoREADME
no nome do diretório contido em$dir
Com
zsh
:Ele combina globbing recursivo (
**/*
) com qualificadores de glob , que são:N
ullglob: não aciona um erro se não houver correspondência./
: restringe a arquivos do tipo diretórioe[code]
:e
avalia ocode
para cada arquivo, aqui anexando/README
ao caminho do arquivo (armazenado no$REPLY
código avaliado).Ou você pode usar uma função anônima que recebe a lista de diretórios e acrescenta o
/README
a cada um nos argumentos que passa paratouch
:(com expansão de array no estilo rc para os argumentos da função
@
anônima usando a$^array
sintaxe).Em todos esses, você pode adicionar o
D
qualificador glob otglob para também adicionarREADME
a diretórios ocultos.