Files
將文件名中包含日期的文件複製到該日期的文件夾中
我尋找了類似的問題,但在我的案例中很難得到明確的答案。
我使用我的 Synology DS1515+ 和 DSM 6.2.2。
首先,我已經使用以下腳本製作了包含日期的每日文件夾;
mkdir /volume1/video/$(date +%Y-%m-%d\(%a\))
該腳本在每天午夜執行。所以每個午夜,這些文件夾都會被製作出來。
(這意味著目標文件夾在複製之前始終已經存在。)
並且下載了一些影片文件。這些文件名包含日期。
例如,ABCDABCD.200328.avi 或 EFGHIJKH.200327.1080p.mp4
文件名沒有特定的規則,但像 YYMMDD 類型的日期包含在每個文件名中。
我想將這些文件複製到包含相同日期的文件夾中。
(如上我解釋的那樣自動製作的文件夾)
$$ Location of directory $$ 我要複製的文件路徑:/volume1/video/
目標目錄範例:/volume1/video/daily/2020-04-06(Mon)
你能幫忙或解釋一下怎麼做嗎?
如果您向我解釋,請在我的案例中包含上述目錄的路徑。
(因為由於缺乏我的理解,我無法應用您向我推薦的程式碼。我很抱歉)
再一次非常感謝你。祝你有美好的一天。
試試這個,
for f in /volume1/video/*; do # skip over directories [ -f "$f" ] || continue # grep the date in YYMMDD format date=$(printf '%s' "$f" | grep -Eo '[0-9]{6}') # set target path using date to convert YYMMDD to YYYY-MM-DD(%a) target="/volume1/video/daily/$(date -d "$date" +%Y-%m-%d\(%a\))/" # mv the file echo mv "$f" "$target" done
- 工作時消除迴聲。
- 也許最好添加一個檢查以查看是否
$date
不為空。- 您可以在
mkdir -p "$target"
之前添加mv
以避免失去目錄的錯誤。- 注意:此程式碼有一個千年錯誤;-)