0
如何在Bash中執行幾行代碼來完成以下操作。我試圖在Bash中建立我的技能,並學習如何從命令行處理更多的小任務目錄。根據日期範圍創建一組文件
步驟:
指定的開始日期和結束日期。將包含開始日期和結束日期之間的所有日期加載到「列表」中
循環遍歷列表,每次創建一個像這樣的文件。 (需要的日期格式)
2017-11-10.w 2017-11-11.w 2017-11-12.w
如何在Bash中執行幾行代碼來完成以下操作。我試圖在Bash中建立我的技能,並學習如何從命令行處理更多的小任務目錄。根據日期範圍創建一組文件
步驟:
指定的開始日期和結束日期。將包含開始日期和結束日期之間的所有日期加載到「列表」中
循環遍歷列表,每次創建一個像這樣的文件。 (需要的日期格式)
2017-11-10.w
2017-11-11.w
2017-11-12.w
您可以將輸入的日期爲Unix的時間戳,然後添加的每一天,touch
,直到你過去的結束日期的結果命名的文件的秒數:
#!/bin/bash
startstamp=$(date -d "$1" +'%s')
endstamp=$(date -d "$2" +'%s')
secs_per_day=$((24 * 3600))
for ((thedate = startstamp; thedate <= endstamp; thedate += secs_per_day)); do
touch "$(date -d "@$thedate" '+%F.w')"
done
的%s
格式化字符串(GNU擴展)打印的自Unix紀元秒@
在參數到-d
選項的數量,並且表示該日期是在第格式。 %F
是%Y-%m-%d
的縮寫,翻譯爲YYYY-MM-DD。
用法示例:
$ ./dates 2017-11-10 2017-11-15
$ ls -1
2017-11-10.w
2017-11-11.w
2017-11-12.w
2017-11-13.w
2017-11-14.w
2017-11-15.w
dates
Bash是不是管理日期很大。我會用Perl或其他更「高級」的語言來做,而不是bash。我的2美分。你試過什麼,研究什麼? – Nic3500