Crie subdiretórios e organize arquivos por data

4

Eu tenho alguns diretórios de arquivos copiados da minha câmera de segurança que gostaria de organizar em subdiretórios por data de arquivo. Então, por exemplo:

-rwxrwxrwx 0 root root 4935241 Jul 19  2012 DSCN1406.JPG
-rwxrwxrwx 0 root root 4232069 Jul 19  2012 DSCN1407.JPG
-rwxrwxrwx 0 root root 5015956 Jul 20  2012 DSCN1408.JPG
-rwxrwxrwx 0 root root 5254877 Jul 21  2012 DSCN1409.JPG

Eu gostaria que um script fosse executado para ver os arquivos nesse diretório e, em seguida, criar os três diretórios necessários com o nome

drwxrwxrwx 1 root root     0 Sep  2 16:49 07-19-2012
drwxrwxrwx 1 root root     0 Sep  2 16:49 07-20-2012
drwxrwxrwx 1 root root     0 Sep  2 16:49 07-21-2012

Em seguida, mova os arquivos para os diretórios apropriados. Alguém tem alguma sugestão sobre uma boa maneira de fazer isso?

    
por Richard Ahlquist 01.03.2013 / 02:03

2 respostas

13

No Linux e no Cygwin, você pode usar date -r para ler a data de modificação de um arquivo.

for x in *.JPG; do
  d=$(date -r "$x" +%Y-%m-%d)
  mkdir -p "$d"
  mv -- "$x" "$d/"
done

(Eu uso o formato YYYY-MM-DD não ambíguo, padrão e fácil de classificar para datas.)

    
por 01.03.2013 / 02:24
0

Abaixo está a prova de falhas, porque ele entra no caminho do diretório e organiza os arquivos dentro do diretório, verificando apenas se o objeto a ser organizado é um arquivo ou não.

dir="mention the directory path"; cd "$dir" ; for x in *; do if [ -f "$x" ]; then d=$(date -r "$x" +%Y/%B/%d) && mkdir -p "$d" && mv -- "$x" "$d/"; fi; done
    
por 03.09.2018 / 18:23