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:
-
-ipath
corresponde a padrões nos nomes de arquivos encontrados. Você também pode usar-name
se tiver certeza de que há apenas um arquivo access.log.gz em cada subcaminho (-name access.log.gz
). -
-execdir
executa o comando fornecido em cada arquivo encontrado, a partir do subdiretório que contém o arquivo correspondente. Isso equivale a fazercd
para 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/
)