Precisa de ajuda para criar subdiretórios para armazenar arquivos com datas

Precisa de ajuda para criar subdiretórios para armazenar arquivos com datas

Novo neste fórum, porém não novo no RHEL ou scripts. No entanto, este está me irritando um pouco. Eu tenho os seguintes arquivos:

2019-05-01-00.34.00.msg 
2019-05-02-00.36.00.msg
2019-06-14-01.38.00.msg

Quero armazená-los em diretórios como este:

/2019/05/01/<Filename>
/2019/05/02/<Filename>
/2019/06/14/<Filename>

Eu também gostaria de manter o nome do arquivo atual ao colocá-los nos diretórios. Além disso, eu gostaria de fazer isso com o bash.

Alguma ideia?

Responder1

Uma maneira simples poderia ser usar a combinação deencontrar,estranhoexargs, basta substituir onde existem os arquivos *.msg:

#!/bin/bash
files="$(find <your_directory> -type f -name '*.msg' | sed 's#.*/##')"
echo "$files" | awk -F '-' '/1/ {print $1"/"$2"/"$3"/"}' | xargs -I {} mkdir -p {}
echo "$files" | awk -F '-' '/1/ {print $1"/"$2"/"$3"/" $0}' | xargs -I {} touch {} 

Resultados :

2019/05/01/2019-05-01-00.34.00.msg
2019/05/02/2019-05-02-00.36.00.msg
2019/06/14/2019-06-14-01.38.00.msg

informação relacionada