Use find ( Como posso usar o comando find com mais eficiência? ? ).
find /home/ -ipath */logs/access.log.gz
Isso deve encontrar todos os arquivos de seu interesse e imprimi-los. Você poderia inserir isso no seu script, mas é provavelmente mais fácil deixar find fazer todo o trabalho pesado.
find /home/ -ipath */logs/access.log.gz -execdir mv "{}" "old/'date +\%G-\%m-\%d'-access.log.gz" \;
Os recursos de find que estamos usando aqui são:
-
-ipathcorresponde a padrões nos nomes de arquivos encontrados. Você também pode usar-namese tiver certeza de que há apenas um arquivo access.log.gz em cada subcaminho (-name access.log.gz). -
-execdirexecuta o comando fornecido em cada arquivo encontrado, a partir do subdiretório que contém o arquivo correspondente. Isso equivale a fazercdpara onde cada arquivo é e, em seguida, executar o comando lá. Nesse caso, ele economiza muita lógica de manipulação de caminho. O arquivo encontrado é substituído por {}. Observe também que "old" é dado como um caminho relativo (como você disse queold/existe emlogs/)