从命令行查找目录中的文件
在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