在Linux下怎么找出多个文件(比如*.cpp)中最新的那个文件?
2017-02-09 15:07
323 查看
问:在Linux下怎么找出多个文件(比如*.cpp)中最新的那个文件?
答:可以采用如下命令形式
(1)将文件按从新到旧排列,取第一个。
ls -t *.cpp | head -1
(2)将文件按从旧到新排列,取最后一个。
ls -rt *.cpp | tail -1
执行示例:
[root@jfht synway]# ls -lrt *.cpp
-rw-r--r-- 1 root root 246 2007-09-12 ch_set.cpp
-rw-r--r-- 1 root root 10073 2008-11-04 ssv_codec.cpp
-rw-r--r-- 1 root root 2199 2008-11-04 main.cpp
-rw-r--r-- 1 root root 600 2008-11-04 config.cpp
-rw-r--r-- 1 root root 2533 2008-11-07 syn_thread.cpp
-rw-r--r-- 1 root root 998 2008-11-07 ssv_server.cpp
-rw-r--r-- 1 root root 5301 2008-11-07 ctsc_session.cpp
-rw-r--r-- 1 root root 9692 2008-11-07 ctmc_session.cpp
-rw-r--r-- 1 root root 83121 2010-06-30 ch_info.cpp
从上面的输出来看,显然ch_info.cpp是最新的。
[root@jfht synway]# ls -t *.cpp | head -1
ch_info.cpp
[root@jfht synway]# ls -rt *.cpp | tail -1
ch_info.cpp
[root@jfht synway]#
编写成脚本执行,如下所示:
[root@jfht synway]# vi newest_file.sh
#!/bin/sh
newest_file_of()
{
ls -t "$@" | head -1
}
echo "newest file of *.cpp is $(newest_file_of *.cpp)"
[root@jfht synway]# ./newest_file.sh
newest file of *.cpp is ch_info.cpp
[root@jfht synway]#
上述命令的详细解释:
ls -t
按修改时间排序,较新的文件排在前面(sort by modification time),也就是按照从新到旧排序。如果要按照从旧到新排序,则需要增加-r参数(逆序)。
man ls 写道
-l use a long listing format
-r, --reverse
reverse order while sorting
-t sort by modification time
head -1
取第一行。也可以写作:head -n 1。
man head 写道
-n, --lines=[-]N
print the first N lines instead of the first 10; with the leading ‘-’, print all but the last N lines of each file
tail -1
取最后一行。也可以写作:tail -n 1。
man tail 写道
-n, --lines=N
output the last N lines, instead of the last 10
问:在Linux下怎么找出多个文件(比如*.cpp)中最新的那个文件?
答:可以采用如下命令形式
(1)将文件按从新到旧排列,取第一个。
ls -t *.cpp | head -1
(2)将文件按从旧到新排列,取最后一个。
ls -rt *.cpp | tail -1
执行示例:
[root@jfht synway]# ls -lrt *.cpp
-rw-r--r-- 1 root root 246 2007-09-12 ch_set.cpp
-rw-r--r-- 1 root root 10073 2008-11-04 ssv_codec.cpp
-rw-r--r-- 1 root root 2199 2008-11-04 main.cpp
-rw-r--r-- 1 root root 600 2008-11-04 config.cpp
-rw-r--r-- 1 root root 2533 2008-11-07 syn_thread.cpp
-rw-r--r-- 1 root root 998 2008-11-07 ssv_server.cpp
-rw-r--r-- 1 root root 5301 2008-11-07 ctsc_session.cpp
-rw-r--r-- 1 root root 9692 2008-11-07 ctmc_session.cpp
-rw-r--r-- 1 root root 83121 2010-06-30 ch_info.cpp
从上面的输出来看,显然ch_info.cpp是最新的。
[root@jfht synway]# ls -t *.cpp | head -1
ch_info.cpp
[root@jfht synway]# ls -rt *.cpp | tail -1
ch_info.cpp
[root@jfht synway]#
编写成脚本执行,如下所示:
[root@jfht synway]# vi newest_file.sh
#!/bin/sh
newest_file_of()
{
ls -t "$@" | head -1
}
echo "newest file of *.cpp is $(newest_file_of *.cpp)"
[root@jfht synway]# ./newest_file.sh
newest file of *.cpp is ch_info.cpp
[root@jfht synway]#
上述命令的详细解释:
ls -t
按修改时间排序,较新的文件排在前面(sort by modification time),也就是按照从新到旧排序。如果要按照从旧到新排序,则需要增加-r参数(逆序)。
man ls 写道
-l use a long listing format
-r, --reverse
reverse order while sorting
-t sort by modification time
head -1
取第一行。也可以写作:head -n 1。
man head 写道
-n, --lines=[-]N
print the first N lines instead of the first 10; with the leading ‘-’, print all but the last N lines of each file
tail -1
取最后一行。也可以写作:tail -n 1。
man tail 写道
-n, --lines=N
output the last N lines, instead of the last 10
相关文章推荐
- 在Linux下找出多个文件中最新的那个文件
- linux怎么返回上级目录啊,用cd/命令却这样:bash:cd/:没有那个文件或目录
- Linux中用find命令找出隐藏文件和目录
- linux下批量修改文件目录下所有cpp文件的最后更改时间
- 实现IComparer接口,找出指定路径下最新被修改的文件
- 怎么根据linux c/c++ 开发的d-bus服务生成java 的调用接口文件
- Linux文件查找命令find详述 怎么在linux内查找东西(包括你想要的)!
- 我的LINUX防火墙配置文件(备查怎么打开8080和3306端口)
- linux命令 — lsof 查看进程打开那些文件 或者 查看文件给那个进程使用
- linux 环境下 G++编译cpp文件
- linux怎么查函数头文件
- 在LINUX下怎么播放MP3等音频文件啊?
- qtopia-core-4.3.3 qmouselinuxtp_qws.cpp文件注释
- linux下用gcc编译c程序时遇到的问题: error: stdio.h: 没有那个文件或目录
- 获取三大主流Linux最新版本安装文件
- 有谁能讲讲 一个EXE 文件是怎样被WINDOWS 给执行的,比如它是怎么被加载的,是怎么被装入内存的,CPU是怎么处理的。
- 软件开发者面试百问-----有一个数组,里面是从1到1,000,000的整数,其中有一个数字出现了两次,你怎么找出那个重复的数字?
- c-free 如何新建.C文件 点 文件--新建--就直接新建了一个.CPP文件。 c怎么建呢
- Linux清除正在写的文件内容(比如nohup.out)
- Linux下磁盘空间满了,怎么找到不想要的耗空间的文件