2013-11-21 174 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),然后通过时间戳反向(使得最新版本至上),并打印所述第一发生每个文件名。