【发布时间】:2023-03-17 11:14:01
【问题描述】:
我正在为操作系统考试做练习。它需要获取当前目录中第二个最后修改的子目录的第三个最近文件。然后我必须以相反的顺序打印它的行。我不能使用 tac 命令。文中建议使用(awk 和 sed 除外):head、tails、wc。
我已成功获取所请求文件的文件名(但我认为方式过于复杂)。现在我必须反向打印它。我想我可以使用这个 awk 解决方案https://stackoverflow.com/a/744093/11614625。
这就是我获取文件名的方式:
ls -t | head | awk '{system("test -d \"" $0 "\" && echo \"" $0 "\"")}' | awk 'NR==2 {system("ls \"" $0 "\" | head")}' | awk 'NR==1'
我怎样才能做得更好?如果第三个目录或第二个文件不存在怎么办?
【问题讨论】:
-
另外,在 awk 中使用
system()是一种 shell 脚本反模式。找出类似.... | awk 'NR==2' | while read dir ; do if [ -d $dir ] ; then echo found dir=$dir"; fi ; done | ....的东西。祝你好运。 -
它可以在 sed 中更简洁地完成,使用保持空间。提示足够了吗?