有没有办法从日志文件中提取最后修改的日期和时间,并将该日期和时间附加到文件中?
我有一个工具,每次运行时都会生成appslist.log文件。 当我运行该工具时,通过我的脚本,applist.log文件已经存在,然后我可能必须将其与创建它的时间和日期相关联。
像:
mv applist.log applist_+%Y%m%d_%H%M%S.log
就像让我说我第一次运行该工具并生成applist.log:
applist.log Mon 03-29-2013
下次我在03-30-2013运行该工具时,我想移动现有的applist.log文件,其中包含一个新名称,其中包含创建它的日期和时间:
like applist_03-29-2013.log
因为该工具将在03-30-2013再次生成applist.log。
答案 0 :(得分:1)
mv applist.log applist_`date -r applist.log +%Y%m%d%H%M%S`.log
这会将文件移动到名称中包含日期的新文件。 date命令允许您以任何格式显示。有关这些字符序列的完整说明,请参阅man date
。使用后退滴答将首先在内部运行命令。日期-r
选项将获取相关文件的日期。
示例:
[me@host temp]$ mv applist.log applist_`date -r applist.log +%Y%m%d%H%M%S`.log
[me@host temp]$ ls -l
total 196
-rw-rw-r--. 1 me me 0 Mar 25 20:55 applist_20130325205532.log
我认为你的程序是一个cron,每秒运行的次数不会超过一次。
答案 1 :(得分:1)
获取文件的创建时间取决于您使用的文件系统 并非所有文件系统都支持检索文件创建时间。试试:
stat --format=%w applist.log
如果你得到一个' - ',你的文件系统不报告创建时间。否则,它会打印时间。
如果以这种方式获得创作时间,您可以使用以下内容进行移动:
fileName="applist.log"
creationTimeEpoch="$(stat --format=%W "${fileName}")"
creationTime="$(date +%Y%m%d_%H%M%S --date="@${creationTimeEpoch}")"
mv -i "${fileName}" "${fileName%.log}_${creationTime}.log"
如果没有,您可以使用文件的修改时间:
fileName="applist.log"
modificationTime="$(date +%Y%m%d_%H%M%S --reference="${fileName}")"
mv -i "${fileName}" "${fileName%.log}_${modificationTime}.log"