递归搜索后,在终端中列出最新文件,按类型(.txt),在终端

问题描述:

我试图让我的终端返回最新的.txt文件,路径完好无损。我一直在研究ls,grep,find和tail,使用'|'将结果从一个工具传递到下一个工具的功能。最终结果将是有一个工作路径+结果,我可以通过我的文本编辑器。递归搜索后,在终端中列出最新文件,按类型(.txt),在终端

我已经越来越接近这样的测试: 找到。 | grep'.txt $'|尾-1

..但我没有运气与grep返回最新的文件 - 是否有我失踪的国旗?

试图用找到& LS是不完全的工作之一:

发现。 -name“* .txt”| ls -lrth

.. ls返回当前目录而不是查找结果。

请帮忙!

你非常亲密。

vi "$(find . -name '*.txt' -exec ls -t {} + | head -1)" 

find /usr/share -name '*.txt' -printf '%C+ %p\n' | sort -r | head -1 | sed 's/^[^ ]* //' 
+0

可悲的是,如果您的文件和/或目录中带有换行符,那么您的炸弹就会炸毁。我知道,不寻常的,但一个完全可靠的解决方案应该处理这些。除此之外,不是一个不好的解决方案。 – 2011-06-10 19:07:59

+1

@克里斯:真的......但你为什么让我出去?对于其他所有解决方案都是如此,因为他们都在使用头像或排序。排序可以处理,但头要求perl或awk。 – 2011-06-10 20:21:52

+0

可能是因为你的第一个答案。通常,我会用“西部最快的枪”的规则来玩,这意味着如果你不是第一张海报(或者你的帖子不在第一张海报的一两分钟内),通常它不算。 (当然,除非这是一个真正的创新答案。) – 2011-06-10 20:29:14

可以使用统计函数来打印每个文件只有最新的修改时间和名称。

找到。 -name“* .txt”-exec stat -c“%m%N”{} \; |排序

如果你有bash4 +

ls -t ./**/*.txt | head -1 

编辑最新的txt文件

vim $(ls -t ./**/*.txt |head -1) 

PS:需要启用shopt -s globstar在你的.bashrc或.profile ...