eGuideDog
free software for the blind

Linux搜索文件(find, locate)

(2014年3月22日更新)

返回目录 上一页 下一页

普通话音频 粤语音频

Linux搜索文件的命令是find。直接输入`find`回车,会显示当前目录及子目录的所有文件列表。下面一条命令是搜索当前目录以下以g开头的文件:
find -name "g*"
如果想忽略大小写,可以增加参数i,写成:
find -iname "g*"
下面一条命令可以搜索/etc目录以下,60分钟内修改过得文件:
find /etc -cmin -60
下面一条命令在当前目录搜索所有文件,不包括目录文件,仅搜索一层目录(即当前目录),找到后对文件执行`file`命令查看其文件类型。需要说明的是,'{}'代表搜索到的文件名,作为file命令的参数。末尾的\;则表示命令结束。
find . -type f -maxdepth 1 -exec file '{}' \;
搜索文件后调用另外一个命令来处理文件是一个很有用的功能,这个功能除了可以用find的exec参数实现外,还可以通过管道操作和xargs命令实现。并且xargs的方式不需要添加末尾的“\;”,可能更好记忆。
find . -maxdepth 1 | xargs file
再举一个管道操作和xargs命令的使用例子。假设我们一堆需要删除的文件路径写在了一个文本文件filelist里,一行一个路径。那么下面命令可以把这些文件删除掉:
cat filelist | xargs rm -rf
find命令搜索是比较慢的,尽量不要在根目录运行这个命令,那样会搜索整个硬盘。如果想在整个硬盘搜索文件,locate命令更适合。使用locate命令之前,我们需要先更新文件路径数据库:
sudo updatedb

注意,updatedb是需要root超级用户权限的,所以需要加sudo前缀,sudo是super user do的意思。更新的操作可能要几分钟时间,但不需要每一次都做,只有当你觉得距离上一次更新操作,有很多文件位置已经发生变化才需要再更新。完成更新后我们可以通过`locate 文件名关键词`来快速搜索一个文件。

find和locate命令的更多用法请查看man命令。

返回目录 上一页 下一页