localize arquivos mais antigos que crie sua pasta pai em um diretório e mova-os para lá

0

Estou tentando criar um script bash que faça o seguinte.

Use o comando find para procurar arquivos com mais de 7 dias ( find . -type f -mtime +7 ! -iname '.*' , pegue o diretório pai (dos arquivos encontrados), crie uma nova pasta com o nome parent directory em um diretório diferente e adicione um _todaysDate ( date '+%m%d&y ) e mova os arquivos encontrados para lá.

qual seria o melhor para fazer isso? %código%? %código%? while loops? Como você faria isso?

obrigado antecipadamente!

EDIT: Para dar um exemplo de estrutura de arquivos

folder1
   - folder2
      -oldfile1

folder1a
   - folder2a
      -folder3a
        -oldfile2

----
In a new directory, a new folder would be created ( and that folder's name would be the parent folder of the old file, and tagged with a date (_040114) - this is where i get the format date '+%m%d%y) and the old files would then be moved in there. Example below -

- new_directory
  - folder2_date
    - oldfile1
  - folder3a_date
    - oldfile2

Espero que isso esclareça o que estou tentando fazer.

    
por PhDeOliveira 01.04.2014 / 22:57

1 resposta

0

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.

    
por 01.04.2014 / 23:57