从命令行查找目录中的文件

在eclipse和textmate等编辑器/ ide中,可以快速找到项目目录中的特定文件。

是否有类似的工具可以在bash或其他shell中以目录(递归方式)的文件名完成路径完整路径?

我有很多目录的项目,还有很深的目录(叹气,java)。 在shell中的选项卡只循环直接目录中的文件,那不够= /


find /root/directory/to/search -name 'filename.*'
# Directory is optional (defaults to cwd)

支持标准的UNIX globbing。 请参阅man find更多信息。

如果你使用Vim,你可以使用:

:e **/filename.cpp

或者:tabn或任何接受文件名的Vim命令。


如果你想用文件列表做一些事情,你可以使用find和bash $()构造(因为它允许嵌套而优于反引号)。

例如,假设您处于项目目录的顶层,并且需要以“btree”开头的所有C文件的列表。 命令:

find . -type f -name 'btree*.c'

将返回它们的列表。 但是这并不能帮助他们做些什么。

因此,我们进一步假设您想要搜索所有这些文件中的字符串“ERROR”或将它们全部编辑。 您可以执行以下任一项:

grep ERROR $(find . -type f -name 'btree*.c')
vi $(find . -type f -name 'btree*.c')

去做这个。


当我在UNIX世界中时(使用tcsh(sigh ...)),我曾经有各种“查找”别名/脚本设置用于搜索文件。 我认为默认的“find”语法有点笨拙,所以我曾经有别名/脚本将“find。-print”传递给grep,它允许您使用正则表达式进行搜索:

# finds all .java files starting in current directory
find . -print | grep '.java'

#finds all .java files whose name contains "Message"
find . -print | grep '.*Message.*.java'

当然,上面的例子可以用普通的查找来完成,但如果你有更具体的搜索,grep可以帮助很多。 这工作得很好,除非“find。-print”有太多的目录来缓冲......然后它变得很慢。 (例如,你不想以root开头/“”)

链接地址: http://www.djcxy.com/p/13665.html

上一篇: Find file in directory from command line

下一篇: Find files with specific keyword in them