Ubuntu查找文件的命令

find


find命令准确,但速度非常慢,它可以查找任何类型的文件

使用格式如下

find [指定目录] [指定条件] [指定动作]

参数说明

  • [指定目录]: 所要搜索的目录及其所有子目录。默认为当前目录
  • [指定条件]: 所要搜索的文件的特征
  • [指定动作]: 对搜索结果进行特定的处理

常用的[指定条件]

  • -name:按文件名来查找文件
  • -user:按照文件的属主来查找文件
  • -group:按照文件所属的组来查找文件
  • -perm:按照文件权限来查找文件
  • -prune:不在当前指定目录中查找

常用的[指定动作]

  • -print:将匹配的文件输出到标准输出
  • -exec:对匹配的文件执行该参数所给出的shell命令
  • -ok:和-exec的作用相同,在执行每一个命令之前,让用户来确定是否执行

find命令不加任何参数时,表示搜索路径为当前目录及其子目录,默认的动作为-print,即不过滤任何结果,也就是说输出所有的文件

使用实例

递归搜索当前目录中,所有以file开头的文件

find . -name 'file*'

递归搜索当前目录中,所有以file开头的文件,并显示它们的详细信息

find . -name 'file*' -ls

locate


locate命令可以说是find -name的另一种写法,但是要比后者快得多,原因在于它不搜索具体目录,而是搜索一个数据库/var/lib/locatedb,这个数据库中含有本地所有文件信息

Linux自动创建这个数据库,并且每天自动更新一次,所以使用locate命令查不到最新变动过的文件。为了避免这种情况,可以在使用locate之前,先使用updatedb命令,手动更新数据库

使用格式如下

locate [参数] <文件名>

使用实例

搜索etc目录下所有以file开头的文件

locate /etc/file

搜索用户主目录下,所有以f开头的文件,并且忽略大小写

locate -i ~/f

whereis


whereis命令只能搜索特定格式的文件

使用格式如下

whereis [参数] <文件名>

可搜索的文件类型

  • 二进制文件(-b)
  • 源代码文件(-s)
  • 说明文件(-m)

如果省略参数,则返回所有信息

使用实例

找出名为find的文件位置

whereis find

which


which命令的作用是,在PATH变量指定的路径中,搜索某个系统命令的位置,并且返回第一个搜索结果

也就是说,使用which命令,就可以看到某个系统命令是否存在,以及执行的到底是哪一个位置的命令

使用格式如下

which <命令>

使用实例

查找find命令的位置

which find

type


type命令其实不能算查找命令,它是用来区分某个命令到底是由shell自带的,还是由shell外部的独立二进制文件提供的

如果一个命令是外部命令,那么使用-p参数,会显示该命令的路径,相当于which命令

使用格式如下

type <命令>

使用实例

type cd

系统会提示,cdshell的自带命令build-in

type grep

系统会提示,grep是一个外部命令,并显示该命令的路径

type -p grep

加上-p参数后,就相当于which命令

感觉比较好用的是locate命令,速度非常快,还能达到find命令一样的准确,只需要先用updatedb命令更新数据库

你可能感兴趣的:(Linux,ubuntu,生活感悟)