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