PALMisLIFE 討論區

搜索
鹹魚爸魅力四射舞蹈教室
查看: 4963|回復: 12
打印 上一主題 下一主題

[求助] unix shell command求助

[複製鏈接]

67

主題

0

好友

237

積分

該用戶從未簽到

文章
135
跳轉到指定樓層
1#
發表於 2005-11-24 10:02 |只看該作者 |正序瀏覽
又來求助了 B)
實在try不出來如何用find去找出最新file ><
我想寫一個shell, 可用來查出某路徑下最新檔案的名稱
不曉得有沒有example可以參考? B) 謝謝
分享淘帖0 分享分享0 收藏收藏0 頂0 踩0

42

主題

0

好友

259

積分

該用戶從未簽到

文章
262
13#
發表於 2005-11-29 09:16 |只看該作者

Re: [求助] unix shell command求助

unix 就有這個好處, 條條大路通羅馬, 只不過有些東西要自己加工處理一下, 我是比較愛用簡單的指令, 最多再寫成shell就好了, 命名規則清楚一點, 應該就沒問題了
有時候世界單純的只剩下
音響那頭的blur
書架上的Umberto Eco
口中的Double Espresso
遠方心愛的妳
及正在上網的我
回復

使用道具 舉報

67

主題

0

好友

237

積分

該用戶從未簽到

文章
135
12#
發表於 2005-11-28 17:26 |只看該作者

Re: [求助] unix shell command求助

謝謝各位前輩的指教
ls -t | perl -e '$_=<STDIN>;print split'
ls -t | head -n 1
兩個都可以run.. 已經搞定了
真不好意思..
因為做server的人離職了
臨危受命
時間上太趕了
我對server的東西又不熟 B)
所以只好上來求教 B)
謝謝大家
回復

使用道具 舉報

21

主題

0

好友

358

積分

該用戶從未簽到

文章
288
11#
發表於 2005-11-26 16:41 |只看該作者

Re: [求助] unix shell command求助

Originally posted by PipperL at 2005-11-26 02:48 AM:
ls -t | head -n 1 也很好用哦


這樣子的話:

  ls -t | head -1

也行

這種小工具倒是不一定每次都會想到要用,也不一定知道要用。
久了生疏了也容易忘記。
如果是我還是會先考慮用 Perl。
(不過 find sort head tail awk cut wc ls grep 等等這些工具都很基本,像我現在少用忘了無可厚非,你可能得仔細研究一下)
(系統裡有很多 Shell Script 的例子可供你參考,有些工具沒見過還不知道可以這樣使用)

[ Last edited by barista on 2005-11-26 at 16:52 ]
回復

使用道具 舉報

44

主題

0

好友

514

積分

啊又換新老闆了。

該用戶從未簽到

文章
457
10#
發表於 2005-11-26 02:48 |只看該作者

Re: [求助] unix shell command求助

Originally posted by bibibo at 2005-11-25 17:20:
謝謝各位前輩的幫忙
我是用csh去寫這個功能
幾過幾次測試..不能使用ls -lt , 因為我只要抓出最新檔案的檔案名稱B)
另外還試過
find ./ -mtime -365 -exec stat -f "%Sm %N" -t "%Y%m%d%H%M%S" {}  \; | sort | tail -n 1
我把L改寫成:
find ./ -print -mtime -365 -exec stat -f "%Sm %N" -t "%Y%m%d%H%M%S" {}  \; | sort | tail -n 1
可是出來的檔案不是最新的, 差不多一個多小時的時間差 B)


我是有點好奇你為什麼要加一個" -print" 進去,如果照你上面說的「只要抓出檔案名稱」,那後面再串個 awk 就好了:

find ./ -print -mtime -365 -exec stat -f "%Sm %N" -t "%Y%m%d%H%M%S" {}  \; | sort | tail -n 1 |awk '{print $2}'

出來的檔案理論上是最新的,find 掃得到沒理由時間會錯。

此外,我覺得 barista 說得很有道理,如果這是工作的一部份,還是要自己學過。一行程式只是為了 copy & paste 方便,效率不一定比較高,能做的事也有限。要處理固定事務的話,我還是習慣使用 perl/sh。

ls -t | head -n 1 也很好用哦
回復

使用道具 舉報

21

主題

0

好友

358

積分

該用戶從未簽到

文章
288
9#
發表於 2005-11-25 18:17 |只看該作者

Re: [求助] unix shell command求助

前面有幾位提到的都可用啊。
ls -alt 為什麼不行!你只要稍微處理一下就好了。
像我在這種時候愛用 Perl:

  ls -alt *.* | perl -e '$_=&lt;STDIN&gt;;print /(\S+)$/'

就可抓出第一個檔名了(相信有很多其他方法,也一定有更簡單的)。

ls 也可以去掉 -a -l,也可不用 Regex:

  ls -t | perl -e '$_=&lt;STDIN&gt;;print split'

如果這是你的工作內容的話,建議你還是學一下 Script Language
跟 Regular Expression。不管是 Shell Script 或是 Perl Script,
解決問題的方式百百種,你也不一定要侷限於 One-Line Program。


Originally posted by bibibo at 2005-11-25 05:20 PM:
謝謝各位前輩的幫忙 :I
我是用csh去寫這個功能
幾過幾次測試..不能使用ls -lt , 因為我只要抓出最新檔案的檔案名稱B)
另外還試過
find ./ -mtime -365 -exec stat -f "%Sm %N" -t "%Y%m%d%H%M%S" {}  \; | sort | tail -n 1
我把L改寫成:
find ./ -print -mtime -365 -exec stat -f "%Sm %N" -t "%Y%m%d%H%M%S" {}  \; | sort | tail -n 1
可是出來的檔案不是最新的, 差不多一個多小時的時間差 B)

[ Last edited by barista on 2005-11-25 at 18:41 ]
回復

使用道具 舉報

67

主題

0

好友

237

積分

該用戶從未簽到

文章
135
8#
發表於 2005-11-25 17:20 |只看該作者

Re: [求助] unix shell command求助

謝謝各位前輩的幫忙
我是用csh去寫這個功能
幾過幾次測試..不能使用ls -lt , 因為我只要抓出最新檔案的檔案名稱B)
另外還試過
find ./ -mtime -365 -exec stat -f "%Sm %N" -t "%Y%m%d%H%M%S" {}  \; | sort | tail -n 1
我把L改寫成:
find ./ -print -mtime -365 -exec stat -f "%Sm %N" -t "%Y%m%d%H%M%S" {}  \; | sort | tail -n 1
可是出來的檔案不是最新的, 差不多一個多小時的時間差 B)
回復

使用道具 舉報

42

主題

0

好友

259

積分

該用戶從未簽到

文章
262
7#
發表於 2005-11-25 17:06 |只看該作者

Re: [求助] unix shell command求助

如果是在同一個目錄, 其實用 ls -alt |more 就會按時間排給你了
有時候世界單純的只剩下
音響那頭的blur
書架上的Umberto Eco
口中的Double Espresso
遠方心愛的妳
及正在上網的我
回復

使用道具 舉報

44

主題

0

好友

514

積分

啊又換新老闆了。

該用戶從未簽到

文章
457
6#
發表於 2005-11-25 11:12 |只看該作者

Re: [求助] unix shell command求助

Originally posted by bibibo at 2005-11-24 10:02:
又來求助了 B)
實在try不出來如何用find去找出最新file ><
我想寫一個shell, 可用來查出某路徑下最新檔案的名稱
不曉得有沒有example可以參考? B) 謝謝


一行文:
find ./ -mtime -365 -exec stat -f "%Sm %N" -t "%Y%m%d%H%M%S" {} \; | sort | tail -n 1

裡面的 365是指 365 天內的。嫌太慢可以調小一點。
回復

使用道具 舉報

46

主題

0

好友

636

積分

該用戶從未簽到

文章
648
5#
發表於 2005-11-25 09:11 |只看該作者

Re: [求助] unix shell command求助

Originally posted by allenown at 2005-11-25 01:27 AM:
find用力去查man就好啦 :p

看你最新檔案定義是什麼
find . -mtime -1 這樣就是前一天修改的檔案
很多方法啦 :p

如果想要找某個目錄下最新的檔案, 又不知道是多久前修改的, 這樣就要從 -mtime -1 一直往前try, 似乎不理想.

不然可以用點小技巧
自己建立一個無用的檔案testfile  用來紀錄時間
在每次搜尋的時候
find . -newer testfile
touch testfile

這樣下次搜尋的時候就會找你這次搜尋之後更新的檔案了

我認為可以列出所有檔案, 再用ls -l列出mtime, 再根據mtime來排序, 自然可以得出最新的檔案.
Visor Deluxe(兩年)/Visor Phone(一年)->Visor Prism/Visor Phone(兩年)->Mio 8380(25天)->Treo 600(三年)->Treo680
Minolta 600si and F200, 24-85/F3.5-4.5, 100-300/F4.5-5.6, 80-200/F2.8, 5400HS
回復

使用道具 舉報

22

主題

0

好友

5075

積分

  • TA的每日心情
    開心
    2011-4-28 00:03
  • 簽到天數: 1 天

    連續簽到: 1 天

    [LV.1]初來乍到

    文章
    213
    4#
    發表於 2005-11-25 01:27 |只看該作者

    Re: [求助] unix shell command求助

    find用力去查man就好啦 :p

    看你最新檔案定義是什麼
    find . -mtime -1 這樣就是前一天修改的檔案
    很多方法啦 :p

    不然可以用點小技巧
    自己建立一個無用的檔案testfile  用來紀錄時間
    在每次搜尋的時候
    find . -newer testfile
    touch testfile

    這樣下次搜尋的時候就會找你這次搜尋之後更新的檔案了
    回復

    使用道具 舉報

    2

    主題

    0

    好友

    411

    積分

    該用戶從未簽到

    文章
    424
    3#
    發表於 2005-11-24 10:51 |只看該作者

    Re: [求助] unix shell command求助

    如果你運氣好使用zsh

    fileList=(${buildsdir}/*(.oc))
    latestFile=${fileList[0]}

    [ Last edited by AlgerChen on 2005-11-24 at 10:56 ]
    ARTIFICIAL INTELLIGENCE
    回復

    使用道具 舉報

    95

    主題

    0

    好友

    1263

    積分

    ?

    該用戶從未簽到

    文章
    1337
    2#
    發表於 2005-11-24 10:35 |只看該作者

    Re: [求助] unix shell command求助

    比對檔案的建立時間? 應該不難吧
    回復

    使用道具 舉報

    您需要登錄後才可以回帖 登錄 | 免費註冊

    與站長聯繫| PALMisLIFE 掌上生活      下載:更快、更棒、更好玩

    GMT+8, 2024-9-22 20:16 , Processed in 0.070747 second(s), 31 queries , Gzip On.

    Powered by Discuz!

    © 2001-2012 Comsenz Inc. style by eisdl

    回頂部