Sua especificação poderia realmente fazer com um exemplo de estrutura de arquivos, pois deixa muito aberta a interpretação. Qual (de um número de casos de uso comum, cada um dos quais obteria uma resposta diferente) você está querendo?
Aqui está algo para você começar. Eu fiz as suposições de que:
- você está executando o script de / HERE /
- você deseja que os arquivos arquivados sejam lançados em / THERE /
- você está executando em um diretório contendo subdiretórios (por exemplo, /HERE/lie/old/files.txt)
- você quer algo como /THERE/lie_MMDDYY/old/files.txt
find . -type f -mtime +7 -printf '%h\n' \
| sort -u \
| sed -e 's,^./,,' \
| while read olddir
do
moveto="/THERE/$(echo \"$olddir\" | cut -d/ -f1)_$(date +%m%d%y)/$(echo \"$olddir\" | cut -d/ -f2-)"
echo mv "$olddir" "$moveto"
done
Quando estiver pronto para executá-lo "com raiva", remova o "eco". Eu tinha tudo isso em uma linha, mas dividi-lo para facilitar a leitura.
Eu recomendaria que você altere o formato de data para usar $ (date -I), pois a saída será classificada com muito mais facilidade.