Files

將文件名中包含日期的文件複製到該日期的文件夾中

  • April 7, 2020

我尋找了類似的問題,但在我的案例中很難得到明確的答案。

我使用我的 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以避免失去目錄的錯誤。
  • 注意:此程式碼有一個千年錯誤;-)

引用自:https://unix.stackexchange.com/questions/578468