2010-10-26 76 views
4

我试图把find命令在UNIX bash的文本文件的结果壳问题重定向找到一个文件的输出

使用:

find ~/* -name "*.txt" -print > list_of_txt_files.list 

然而list_of_txt_files.list住宿空,我必须杀死查找,让它返回命令提示符。我有很多txt文件在我的主目录

或者如何将find命令的结果保存到从命令行的文本文件。我认为这应该工作

回答

5

我会做的第一件事就是使用单引号(有些shell会扩展通配符,但我认为bash不会,至少在默认情况下),并且find的第一个参数是一个目录,不是一个文件列表:

find ~ -name '*.txt' -print > list_of_txt_files.list 

除此之外,它可能只是需要很长的时间,虽然我不能想象有许多文本文件的人(你说你有一个很多,但它必须非常大,以减慢find)。尝试它没有重定向,看看它输出:

find ~ -name '*.txt' -print 
+0

当我尝试使用此命令并将输出重定向到文件时,我的机器运行速度非常慢。慢速机器导致重定向输出慢得多 - 即几分钟后文件仍然是零字节,而没有输出重定向,* .txt文件立即被列出。现在我的机器有更多的资源,两种方式看起来都很快。 – harijay 2010-10-26 19:34:01

1

您可以通过使用三通一起重定向输出到文件和控制台。

find ~ -name '*.txt' -print | tee result.log 

这将输出重定向到控制台和文件,因此你不必猜测命令是否是否真正执行。