如何重命名文件以匹配当前(四舍五入)时间。例如,如果是 10:55 或 11:05,那么我想将其重命名为11
。
像这样:
mv file.txt file_`date +%H`.txt
但要按照上面描述的进行舍入。
谢谢
答案1
hour=$(date +%H);[[ $(date +%M) -ge 30 ]]&&let hour++;[[ $hour = 24 ]]&&hour=0;hour=$(printf %02d $hour);for f in *.txt;do mv "$f" "${f%.txt}_$hour.txt";done
答案2
您正在尝试将时间四舍五入到最接近的 3600 秒。
一般来说,为了四舍五入,先添加半个单位,然后截断为该单位;这很容易用整数除法来完成(除以单位并丢弃余数,然后乘以单位 - 这将始终截断,即向下舍入,但请记住您已经添加了半个单位)。
HOUR=$(date -d @$(( ( $(date +%s) + 1800 ) / 3600 * 3600 )) +%H)
mv "file.txt" "file_${HOUR}.txt"
答案3
在 Mac OS X(BSD 日期)上:
mv file.txt file_$(date -v +30M +%H).txt
在 Linux 上(GNU 日期):
mv file.txt file_$(date '+30min' +%H).txt
两者的作用相同:打印当前时间的小时值 + 30 分钟。