![需要帮助创建子目录来存储带有日期的文件](https://linux22.com/image/1606708/%E9%9C%80%E8%A6%81%E5%B8%AE%E5%8A%A9%E5%88%9B%E5%BB%BA%E5%AD%90%E7%9B%AE%E5%BD%95%E6%9D%A5%E5%AD%98%E5%82%A8%E5%B8%A6%E6%9C%89%E6%97%A5%E6%9C%9F%E7%9A%84%E6%96%87%E4%BB%B6.png)
我是这个论坛的新手,但对 RHEL 或脚本并不陌生。不过这个有点让我恼火。我有以下文件:
2019-05-01-00.34.00.msg
2019-05-02-00.36.00.msg
2019-06-14-01.38.00.msg
我想将它们存储在这样的目录中:
/2019/05/01/<Filename>
/2019/05/02/<Filename>
/2019/06/14/<Filename>
我还想在将文件放入目录时保留当前文件名。此外,我还想使用 bash 执行此操作。
有什么想法吗?
答案1
一个简单的方法可能是使用寻找,awk和参数,只需替换 *.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 {}
结果 :
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