Bash重命名为时间


2

如何重命名文件以匹配当前(舍入)时间。如果是例如10:55或11:05那么我想将其重命名为11

像这样的东西:

mv file.txt file_`date +%H`.txt

但是如上所述的舍入。

谢谢

Answers:


2

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


printf:`%02':缺少格式字符
Dado 2013年

@Dado这个错误意味着你忘了指定它看起来什么格式,在这种情况下,你需要一个d%02...(可能太晚提到这一点,但在任何情况下将其添加通过搜索找到这个)
mason81

0

你试图将时间缩短到最接近的3600秒。

一般来说,为了圆形,添加半个单位,然后截断到该单位; 这很容易使用整数除法(除以单位并丢弃余数,然后乘以单位 - 这将总是截断,即向下舍入,但请记住,您已经添加了半个单位)。

HOUR=$(date -d @$(( ( $(date +%s) + 1800 ) / 3600 * 3600 )) +%H)
mv "file.txt" "file_${HOUR}.txt"

0

在Mac OS X上(BSD日期):

mv file.txt file_$(date -v +30M +%H).txt

在Linux上(GNU日期):

mv file.txt file_$(date '+30min' +%H).txt

两者都做同样的事情:打印当前时间的小时值+ 30分钟。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.