• 在Linux下找出多个文件中最新的那个文件


    问:在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

  • 相关阅读:
    hrbust1279
    U盘快捷方式中毒处理办法
    计算几何
    poj1113
    凸包模版
    STL容器
    HDU2048
    HDU2047
    HDU2045
    python面试题总结
  • 原文地址:https://www.cnblogs.com/sky7034/p/2148914.html
Copyright © 2020-2023  润新知