問:在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()
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下怎麼找出多個檔案 比如 cpp 中最新的那個檔案?答 可以採用如下命令形式 1 將檔案按從新到舊排列,取第乙個。ls t cpp head 1 2 將檔案按從舊到新排列,取最後乙個。欠款 ls rt cpp tail 1 執行示例 root jfht synway ls lrt c...
linux下編譯多個檔案
例如 home files資料夾下有檔案main.c home files common資料夾下有檔案tou.h和shixian.c。tou.h為 若有多個shixian檔案,比如shixian1.c,shixian2.c,都可以在tou.h中用extern宣告出來。shixian.c為 編譯時用命...
在Linux, 找出新修改的檔案
在linux系統下,找出新修改的檔案,並且,複製到 合適的位置 注意 每次修改 前,在 var www html jitong360temp 下面 touch time.txt root bogon jitong360temp pwd var www html jitong360temp root ...