Linux如何使用时间/日期戳重命名文件

6
我有一个单一的文件,我想将其重命名为年_月_日_时:分:秒 - 最好的方法是什么?
我尝试了以下方法,但它没有动态地添加正确的时间戳(原始文件实际上在名称中有反斜杠):
mv getnw/myfilename.txt "%Y%m%d%H%M%S".txt mv getnw/myfilename.txt "%Y-%m%d%H%M%S".txt mv getnw/myfilename.txt %Y-%m%d%H%M%S.txt mv getnw/myfilename.txt "'date +%Y%m%d%H%M%S'.txt"

1
使用 mv 命令。你尝试过什么? - Mat
请将此编辑到您的问题中,并且请添加有关源文件名称的更多详细信息(即实际示例文件名)以及您要自动化的内容。 - Mat
2
请注意,虽然大多数文件系统在文件名中使用“:”没有问题,但将此文件传输到与Windows兼容的文件系统时会出现问题,因为这些文件系统将“:”视为特殊字符。 - Piskvor left the building
1
Piskvor:没错。它可以在Linux/Mac上运行,但通常在文件名中使用特殊字符是一个不好的主意。 - dsomnus
@dsomnus:标点符号并没有什么“特别”的地方。我个人喜欢能够使用完整的句子作为文件名,而不必将所有标点符号替换为“_”。哦,等等,在NTFS文件名中允许使用“.”。但是“,”呢?也许可以。而“!”是可以的,但是“?”会带来麻烦。还是反过来了吗?从上世纪80年代开始存在着任意规则,真是玩得很开心 :-( - Piskvor left the building
2个回答

16
mv myfile.txt `date +%Y_%m_%d_%H:%M:%S`.txt

2
mv myfile.txt myfile`date -Is`.txt

这是一个简短版的写法。

但是,某些Unix命令(如rsync或scp)无法使用: ,因为它会将名称的一部分解析为主机地址。请使用tr 来更改:

mv myfile.txt myfile`date -Is|tr : -`.txt

或者

mv myfile.txt myfile$(date -Is|tr : -).txt

1
冒号在所有文件系统或计算机系统中也都不能使用。请参考文件名中允许的字符Unix文件名应限制哪些字符? - U880D

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接