這是這個論壇的新手,但對於 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