我的文件名将采用日期格式。例如:20160920-A.cc1。每天我都会收到不同的文件,其中包含当前日期(yyyymmdd-A.cc1)。我需要使用与加载的名称相同的名称以及日期和时间戳作为文件的后缀来归档此文件。
所以我的输入就像 20160920-A.cc1
输出一样被移动到另一个文件夹,应该像这样
20160920-A.cc1_20160920-hh:mm:ss
答案1
您只需要date
详细了解命令即可。看date --help
。
如果您要存档为 tarball 使用,
tar czf filename_`date +%Y%m%d_%H_%M_%S`.tar.gz filename
IE
tar czf 20160920-A.cc1_`date +%Y%m%d_%H_%M_%S`.tar.gz 20160920-A.cc1
冒号:不是有效的文件名,因此使用下划线_代替 hh:mm:ss。
答案2
我认为使用 date 命令应该可以解决问题。
echo some fancy data for the file > $(date +"%Y%m%d")-A.cc1
cp $(date +"%Y%m%d")-A.cc1 <another folder path>/$(date +"%Y%m%d")-A.cc1_$(date +"%Y%m%d-%H:%M:%S")
如果您想在文件创建的不同日期复制文件 - 请使用以下命令:
cp {,<another path>/}20160919-A.cc1
mv <another path>/20160919-A.cc1{,_$(date +"%Y%m%d-%H:%M:%S")}
重要的是:如果要复制多个文件,请使用循环
答案3
谢谢特哈斯和基奥克拉。
我也尝试过像下面的格式。但它仅适用于当天。
mv 20160919-A.cc1 `date "+%Y%m%d"'-A.cc1_`date +%Y%m%d_%H_%M_%S`
我的输出是:
20160920-A.cc1_2016_09_20_16:50:00
- 注意:这将选择移动以当前日期作为前缀和后缀的文件,而不是输入文件的特定日期