2013-11-21 172 views
0

最新版本的文件,我已經找到子目錄UNIX找到子目錄

[email protected]:/tmp/pathtofind> find . -name "*.txt" -printf "%T+ %p\n" 
2013-11-21+13:34:05.7255244000 ./20131119/abc.txt 
2013-11-21+13:33:56.5965250740 ./20131120/abc.txt 
2013-11-21+13:34:17.6735259520 ./20131118/abc.txt 
2013-11-21+13:33:53.0055261810 ./20131121/abc.txt 

所有我需要的是路徑,以及爲進一步處理該文件的最新版本的文件名,在最新版本的文件這種情況下它會./20131118/abc.txt

你能幫我怎麼做?

問候,維沙爾

編輯:

對不起我真正需要的是每一個不同的文件名的目錄中的最後一個版本(的abc.txt和def.txt):

[email protected]:/tmp/pathtofind$ find . -name "*.txt" -printf "%T+ %p\n" 
2013-11-21+17:56:48.4251785260 ./20131121/abc.txt 
2013-11-21+17:56:57.8651782010 ./20131121/def.txt 
2013-11-21+17:56:37.6731789030 ./20131118/abc.txt 
2013-11-21+17:57:14.2571776330 ./20131118/def.txt 
2013-11-21+17:56:24.2011793670 ./20131119/abc.txt 
2013-11-21+17:57:24.4011772720 ./20131119/def.txt 
2013-11-21+17:56:29.1371791980 ./20131120/abc.txt 
2013-11-21+17:57:19.6411774490 ./20131120/def.txt 

[email protected]:/tmp/pathtofind$ find . -name "*.txt" -printf "%T+ %p\n" | sort | tail -1 
2013-11-21+17:57:24.4011772720 ./20131119/def.txt 

只能找到文本文件的最新版本。

什麼,我確實需要在這種情況下將是:

2013-11-21+17:56:48.4251785260 ./20131121/abc.txt 
2013-11-21+17:57:24.4011772720 ./20131119/def.txt 

問候,維沙爾

回答

1

更改printf格式發出紀元以來的秒數和排序。說:

find . -name "*.txt" -printf "%[email protected] %p\n" | sort | tail -1 

將打印最新的文件。

-printf format 
      ... 
       @  seconds since Jan. 1, 1970, 00:00 GMT, with frac‐ 
         tional part. 
+0

感謝您的回答,但我的場景不完整,請參閱編輯。問候,vishal – user3017714

0

管上面的輸出到

sort -k1.43 -k1r|uniq -s42 

- 這種由文件名(其開始於柱43),然後通過時間戳反向(使得最新版本至上),並打印所述第一發生每個文件名。