问:在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
本文链接:http://codingstandards.iteye.com/blog/1154520
分享到:
相关推荐
在实际应用中,了解缓存中的文件对于系统管理员来说非常有用,例如,可以帮助他们监控系统的资源使用情况,找出占用大量内存的文件,或者在性能调优时,确定是否需要清除某些缓存以释放内存资源。此外,对于开发者而...
在Linux环境中,管理和操作多个Java应用程序(通常以.jar文件的形式存在)是一项常见的任务。本文将详细探讨如何通过编写脚本实现一键启动、停止和重启这些.jar文件,以提高工作效率。 首先,我们需要理解“Linux...
2. `tar`:用于打包多个文件或目录,如`tar -cvf archive.tar directory/`。加上`-z`参数可以同时压缩,如`tar -czvf archive.tar.gz directory/`。 3. `bzip2`:提供比`gzip`更好的压缩率,但速度较慢,如`bzip2 ...
- `-h`:在查询多个文件时不显示文件名。 - `-l`:查询多个文件时仅输出包含匹配项的文件名。 - `-n`:显示匹配行及其行号。 - `-s`:不显示错误信息(如文件不存在)。 - `-v`:显示不包含匹配文本的所有行。 ...
在Linux系统中,core文件是一种非常重要的调试工具。当我们运行的程序出现异常并崩溃时,如果启用了core文件的生成,那么系统会在程序崩溃时自动创建一个core文件,该文件包含了程序崩溃时内存的快照以及其他有用的...
在Linux系统中,了解文件或目录的大小对于磁盘空间管理至关重要。`du`(disk usage)命令是Linux下常用的工具之一,它可以帮助用户轻松地查看文件或目录占用的空间大小。 #### 1. 基本用法 ##### `du` 基本语法...
`.tar` 文件是一个归档文件,它将多个文件和目录组合成一个单一的文件,方便分发和备份。`.gz` 和 `.xz` 是两种不同的压缩格式,`.gz` 通常压缩速度较快,但压缩比相对较低,而`.xz` 压缩比更高,但压缩和解压缩时间...
这里需要注意的是命令中的`-jar`选项,它告诉Java运行时环境去读取该文件的`manifest.mf`文件,并从中找出`Main-Class`,然后执行该类的`main`方法。 #### 总结 通过上述步骤,可以在Linux环境下顺利地执行含有`...
1. **文件比较**:在Linux服务器上,可以使用`diff`命令对比两个版本的项目,找出不同之处。例如,`diff -r old_project new_project`会比较两个目录下的所有文件。 2. **日志分析**:如果项目有日志记录,分析这些...
"多个文件中查找字符串"这个主题涉及到的是如何有效地在一系列文件中定位特定的文本片段。以下是对这个主题的详细解释: 一、基础概念: 1. 文件:在计算机系统中,文件是数据的集合,可以包含文本、图片、音频、...
标题中的"linux下查找重复文件"表明我们要探讨的是如何在Linux环境中有效地找到并处理重复的文件。描述中提到“亲测有效”和“网上的都是错误的”,暗示这里将分享一个经过验证的方法,适用于没有网络连接的情况。 ...
- 文件分割通常涉及到创建多个小文件以代替大文件。虽然在描述中没有提供具体的Java代码,但通常可以使用`split`命令或者Java程序来实现。`split`命令可以基于行数或大小分割文件。在Java中,可以读取大文件,每次...
2. **GRUB或LILO**:GRUB是红旗Linux常用的引导装载程序,它允许用户在多个操作系统之间选择,或者在不同版本的Linux之间切换。GRUB配置文件(通常为`/boot/grub/grub.cfg`)定义了引导菜单项和相应的内核参数。 3....
当有两个或多个文本文件时,我们可能需要找出它们之间的不同之处。这种比较通常是对文件内容逐行进行的,以确定哪一行只存在于一个文件而不在另一个文件中。这被称为“唯一行”或“独有行”。 实现这个目标的方法有...
"文件扫描(找出重复文件)"的主题聚焦于如何在计算机系统中有效地检测并管理重复的文件。这涉及到多个知识点,包括文件系统的理解、数据比较算法的应用以及优化的搜索策略。 首先,我们需要理解文件系统是如何组织和...
在Linux操作系统中,掌握如何查看文件的打开情况对于系统管理和故障排查至关重要。`lsof`(list open files)命令是一个非常实用的工具,它能够显示系统中所有打开的文件和对应的进程信息。本文将深入探讨`lsof`命令的...
Linux与Windows文件传输工具FlashFXP是一款强大的FTP客户端软件,它允许用户在不同的操作系统之间方便地进行文件交换。本文将详细介绍FlashFXP的功能、使用方法以及如何在Linux和Windows之间进行文件传输。 ...
由于Linux系统具有多种发行版且不断更新,有时即便参考书籍中给出的文件位置,也可能因版本差异找不到所需文件。因此,理解和掌握“find”命令的使用方法对于Linux用户,尤其是新手来说至关重要。 **基本使用方法**...
- 减少文件版本数量:对于包含多个版本的库文件,可以选择只保留最新版本。 - 使用静态链接而非动态链接:动态链接虽然方便,但会增加文件系统的大小。在资源受限的环境下,使用静态链接可以减少文件系统的占用...