Nuevo en este foro, pero no nuevo en RHEL o scripting. Sin embargo este me molesta un poco. Tengo los siguientes archivos:
2019-05-01-00.34.00.msg
2019-05-02-00.36.00.msg
2019-06-14-01.38.00.msg
Quiero almacenarlos en directorios como este:
/2019/05/01/<Filename>
/2019/05/02/<Filename>
/2019/06/14/<Filename>
También me gustaría conservar el nombre del archivo actual al colocarlo en los directorios. Además, me gustaría hacer esto con bash.
¿Alguna idea?
Respuesta1
Una forma sencilla podría ser utilizar la combinación deencontrar,awkyxargos, simplemente reemplace donde existen los archivos *.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