Como criar o mesmo arquivo em todos os subdiretórios?

1

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

    
por Maxim Zubarev 09.06.2018 / 12:08

2 respostas

0

Supondo que você use bash como seu shell, use a expansão de chaves.

touch /path/to/my/subs/{a,b,c}/foo.md
    
por 09.06.2018 / 18:51
0

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

    
por 09.06.2018 / 19:19