问题描述
我是一名自学者,刚开始使用麻省理工学院名为./missing semester的课程中的讲座和材料学习bash和shell脚本
我刚刚完成了第一堂课和大部分练习,但是我特别专注于练习9。目标是使用>
和|
来获取文件semester
的最后修改日期,并将其输入到新文件last-modified.txt
中。
我已经阅读了touch
,ls
,stat
和cat
的帮助和手册页,但我想不出一种方法来仅获取最后一个目标文件的修改日期。我知道我缺少使用一个程序的输出和将其管道输送到另一程序的输入之间的联系。到目前为止,这是我在Windows 10上使用WSL2进行的尝试。我的shell是zsh。
如果任何人有任何资源向正确的方向指点我,我将不胜感激。预先谢谢你!
解决方法
您可以使用stat
命令而不是ls
来获取信息。
-c
选项可让您以某种格式指定某些文件信息-根据您确切需要的信息,此选项的参数将有所不同。
(来自stat man page):
%x Time of last access,human-readable
%X Time of last access,seconds since Epoch
%y Time of last data modification,human-readable
%Y Time of last data modification,seconds since Epoch
%z Time of last status change,human-readable
%Z Time of last status change,seconds since Epoch
因此,假设您希望上次修改数据的时间是人类可读的,请使用:
stat -c %y semester
您可以使用>
将结果写入另一个文件
这是我使用过的并且有效。
./学期|头-n12 | tail -n1> last-modified.txt
head输出前12行,然后tail输出最后一行,最后将输出放入last-modified.txt