Seu script só copia em subdiretórios porque é tudo o que você está mandando fazer ( ./*
é todos os arquivos no diretório atual e você nunca vai mais fundo). Você poderia implementá-lo de forma recursiva, mas é provavelmente mais fácil fazer algo como:
find . -mindepth 1 -type d -exec cp a.txt {} \;
Ou para conformidade POSIX e portabilidade máxima :
find . ! -path . -type d -exec cp a.txt {} \;
Isso fará o que você quiser: copie a.txt para cada diretório (sub) + na árvore atual.
Você pode usar a opção -maxdepth
para limitar a profundidade dos subdiretórios, se desejar. Você pode usar a opção -mindepth
(quando disponível) para definir um limite mínimo de profundidade. No primeiro exemplo acima, usamos -mindepth 1
para ignorar .
para evitar emitir um aviso sobre como copiar um arquivo para si mesmo - não é absolutamente necessário, mas é bom não ter avisos.
Para obter mais informações sobre find
, consulte a página do manual .