Neu in diesem Forum, aber nicht neu bei RHEL oder Scripting. Das hier nervt mich allerdings ein bisschen. Ich habe die folgenden Dateien:
2019-05-01-00.34.00.msg
2019-05-02-00.36.00.msg
2019-06-14-01.38.00.msg
Ich möchte sie in Verzeichnissen wie diesem speichern:
/2019/05/01/<Filename>
/2019/05/02/<Filename>
/2019/06/14/<Filename>
Ich möchte auch den aktuellen Dateinamen beibehalten, wenn ich sie in den Verzeichnissen platziere. Außerdem möchte ich dies mit Bash tun.
Irgendwelche Gedanken?
Antwort1
Eine einfache Möglichkeit wäre die Kombination vonfinden,awkUndxargs, ersetzen Sie einfach, wo die *.msg-Dateien vorhanden sind:
#!/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 {}
Ergebnisse :
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