Supondo que você use bash
como seu shell, use a expansão de chaves.
touch /path/to/my/subs/{a,b,c}/foo.md
Eu tenho muitos subdiretórios existentes, como:
/path/to/my/subs/a
/path/to/my/subs/b
/path/to/my/subs/c
Não, quero criar um novo arquivo em cada um deles. O nome do arquivo é constante, como:
/path/to/my/subs/a/foo.md
/path/to/my/subs/b/foo.md
/path/to/my/subs/c/foo.md
Como faço isso? Eu esperava que o touch /path/to/my/subs/*/foo.md
fizesse, mas ele disse touch: /path/to/my/subs/*/foo.md: No such file or directory
Supondo que você use bash
como seu shell, use a expansão de chaves.
touch /path/to/my/subs/{a,b,c}/foo.md
Você pode usar o utilitário find
:
find /path/to/my/subs -type d -links 2 -exec touch "{}/foo.md" \;
Isto irá percorrer toda a árvore a partir de subs, localizar diretórios de folhas (terminais) e tocar em um arquivo foo md lá.
Você também pode omitir a parte "-exec" ... e usar xargs
para criar todos os arquivos no final, gerando menos touch
binários ou usar um único toque:
touch $( find /path/to/my/subs -type d -links 2 | sed -e 's#$#/foo.md#g' )
A parte find
irá obter os diretórios, sed
irá transformá-los nos nomes de arquivos apropriados.
Se você tiver uma única camada de diretórios:
para dir em / path / to / my / subs / *; toque em $ dir / foo.md; feito
Tags shell filesystems terminal macos touch