需求
从一个目录中取出最近访问过的 5 个普通文件, 并且要求输出文件名和最后的访问时间
解决方案
通过 ls -t 和 - u 根据文件的访问时间进行排序, 用 | grep 过滤出普通文件, 在用 head 过滤出文件列表的前五行, 最后用 cut 剪切无关的数据, 只保留访问时间和文件名
[root@iZ2ze7m4apicbnc8vvlx1cZ proc]# ls -lut |grep "^-" |head -5 |cut -c41-
运行结果
- [root@iZ2ze7m4apicbnc8vvlx1cZ proc]# ls -lut |grep "^-" |head -5 |cut -c41-
- 0 Mar 21 10:44 buddyinfo
- 0 Mar 21 10:44 cgroups
- 0 Mar 21 10:44 cmdline
- 0 Mar 21 10:44 consoles
- 0 Mar 21 10:44 cpuinfo
讨论
ls -t 根据文件的修改时间进行排序
ls -u 可以显示出文件的最后访问时间, 并让 - t 基于访问时间来排序
^- 是一个正则表达式, 以横杠开头, 这里表示普通文件
cut -c 指定了 cut 命令保留并输出那些字符
下面是通过横杠 - 指定范围, 还可以使用逗号, 指定范围
范围 | 描述 |
---|---|
N | 第 N 个字符 |
N- | 从第 N 个字符一直到当前行结束 |
N-M | 从第 N 个字符一直到第 M 个字符 |
-M | 从第一个字符一直到第 M 个字符 |
来源: http://www.bubuko.com/infodetail-2533784.html