在Unix中查找所有具有特定扩展名的文件?
我有一个文件/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home 
我试图find我的硬盘上的其他地方是否有* .jdk。 所以我做一个search命令:
 find . -name "*.jdk" 
但它没有find任何东西。 甚至连我所知道的我都没有。 怎么来的?
 find . 只能看到你的当前目录。 如果您有权限查找其他目录中的文件(root访问权限),那么您可以使用以下命令查找您的文件 –  
 find / -type f -name "*.jdk" 
如果您正在获取吨权限被拒绝的消息,那么你可以通过这样做来压制
 find / -type f -name "*.jdk" 2> /dev/null 
一个/
 find . 意思是“查找(从当前目录开始)”。 如果你想search整个系统,使用find / ; 在/System/Library下search,使用find /System/Library等。 
b /
 在通配符周围使用单引号更安全。 如果在运行时没有在工作目录中命名为* .jdk的文件,则会find命令行: 
  find . -name *.jdk 
 但是,如果您在运行时foo.jdk在当前目录中存在junk.jdk和foo.jdk文件, foo.jdk find内容: 
  find . -name junk.jdk foo.jdk 
  …将会(因为有两个)混淆,导致错误。 如果你然后删除foo.jdk并再次做同样的事情,你会有 
  find . -name junk.jdk 
  …永远不会find一个文件(例如) 1.6.0.jdk 。 
在这方面你可能想要的是
  find /System -name '*.jdk' 
  …或者,你可以“逃避” * : 
  find /System -name \*.jdk 
 或许你的JDK是大写的,并且/或者如果没有指定操作,那么在OS X上可用的find版本不会默认为-print ; 尝试: 
 find . -iname "*.jdk" -print 
  ( -iname类似于-name但执行不区分大小写的匹配; -print表示find打印结果) 
—编辑—
 正如@Jaypal所指出的那样,明显地find .  …仅查看当前目录(和子目录),如果要search整个驱动器,则必须指定/作为searchpath。 
'。' 你正在使用的是当前目录。 如果你是在你的家目录开始,它可能会错过JDK文件。
最糟糕的情况是从根开始search
  find / -name '*.jdk' -o -name '*.JDK' -print 
否则用你确定的pathreplace'/'应该是你的JDK文件的父path。
我希望这有帮助。