在bash中格式化时间戳以用于文件操作
当我尝试使用时间戳作为文件名的一部分时,bash让我感到有些奇怪在bash中格式化时间戳以用于文件操作,bash,date,timestamp,cp,colon,Bash,Date,Timestamp,Cp,Colon,当我尝试使用时间戳作为文件名的一部分时,bash让我感到有些奇怪 #!/bin/bash DATE=`date -d "today" +"%Y%m%d-%H:%M"` dtl=$DATE.log for drive in $( ls /dev/disk/by-id | grep 'scsi-35' ); do mkdir -p /home/tt/drivelog/${drive} cp /home/tt/drivelog/currentset/$drive.log "/home/tt
#!/bin/bash
DATE=`date -d "today" +"%Y%m%d-%H:%M"`
dtl=$DATE.log
for drive in $( ls /dev/disk/by-id | grep 'scsi-35' ); do
mkdir -p /home/tt/drivelog/${drive}
cp /home/tt/drivelog/currentset/$drive.log "/home/tt/drivelog/$drive/$dtl"
done
DATE-d“今天”+%Y%m%d-%H\:%m“
这将生成一个名为20171122-12\/15.log的文件/home/tt/drivelog/currentset/scsi-35000c50094vv123z.log
/home/tt/drivelog/scsi-35000c50094vv123z/20171122-11:55。log
20171122-12:47
正如bash中所报道的:
+dtl=20171122-12:50.日志
使用bash运行脚本突出显示了以下问题:
1.命令工作正常
+cp/home/tt/drivelog/currentset/scsi-35000c50094aa123z.log/home/tt/drivelog/scsi-35000c50094aa123z/20171122-12:50.log
20171122-11:58.log
20171122-12 \:00.log
20171122-12 \:27.log
20171122-12 \:48.log
20171122-12:50.日志
然而,从我的Mac电脑上看到这一点时,却忽略了冒号
我要将其标记为关闭,因为根本问题是Mac AFP显示不一致问题,而不是bash问题。请参阅:1984年我第一次使用冒号时,Mac OS使用冒号作为路径分隔符。随着迁移到OS X,这一点在亿万年前发生了变化。AFP和AFP的第三方实现都带有“YMMV”“注意事项,这显然是我错过的
多亏了John1024,这里的问题是AFP上的结肠显示不正确
实际上,上面的代码按预期生成冒号。有关OS X(及以前版本)特性的更多信息,请参见。在命令行中运行
date-d“today”+%Y%m%d-%H:%m”
,并告诉我们您看到了什么。接下来,运行bash-xyourscript
并向我们显示结果。@John1024,如果您愿意回答“我认为这是一个Mac APFS显示不一致的问题”,我将接受该答案,我们可以解决这个问题。谢谢。你做得很好,你解决了它。在StackOverflow上写下您自己问题的答案并接受它是一种非常好的形式。作为文档:APFS在这里并不是真正相关的,这是由于macOS API中的不一致性造成的。有些使用unix路径表示法(以“/”作为目录分隔符,文件名中允许“:”),有些使用旧的Mac OS表示法(以“:”作为分隔符,文件名中允许“/”)。因此,文件名中的哪个字符取决于用于访问(/list)它的API,而不是它所在的卷的类型。