Linux 文件查找命令
1> which [可执行文件名]
查找可执行文件命令
显示一个可执行文件的完整路径
按照alias -> $PATH的顺序查找
例 which lmcbbat
2> whereis [可执行文件名]
搜索一个可执行工具及其相关配置,帮助
例 whereis lmcbbat
3> slocate/lacate [关键字]
所有文件名及其所在路径包含关键字段的文件与目录都会显示
可以使用-r参数使用正则表达式精确匹配
slocate
先将当前目录结构做成一个数据库,
然后再在此数据库中搜索匹配记录
updatedb
命令可以更新locate数据库,当前所有目录更新一遍
//注:使用locate之前最好先用updatedb更新数据库
// 防止系统数据库上次更新之前系统数据有改动
例 updatedb
locate -r ".*newfile.*"
4> find [路径] [参数] [表达式]
从指定路径下递归向下搜索文件
支持按照各种条件方式搜索
支持对搜索得到的文件进一步用指令操作
参数:
-name
按照文件名查找文件。
-perm
按照文件权限来查找文件。
-prune
使用这一选项可以使find命令不在当前指定的目录中查找,
如果同时使用-depth选项,那么-prune将被find命令忽略。
-user
按照文件属主来查找文件。
-group
按照文件所属的组来查找文件。
-mtime -n +n
按照文件的更改时间来查找文件, - n表示文件更改时间距现在n天以内,
+ n表示文件更改时间距现在n天以前。find命令还有-atime和-ctime 选
项,但它们都和-m time选项。
-nogroup
查找无有效所属组的文件,即该文件所属的组在/etc/groups中不存在。
-nouser
查找无有效属主的文件,即该文件的属主在/etc/passwd中不存在。
-newer file1 ! file2
查找更改时间比文件file1新但比文件file2旧的文件。
-type
查找某一类型的文件,诸如:
-type c b l f d
类型 字符设备文件 快设备文件 符号链接文件 普通文件 目录
find命令的例子;
1、查找当前用户主目录下的所有文件:
下面两种方法都可以使用
$ find $HOME -print
$ find ~ -print
2、让当前目录中文件属主具有读、写权限,并且文件所属组
的用户和其他用户具有读权限的文件;
$ find . -type f -perm 644 -exec ls -l { } \;
3、为了查找系统中所有文件长度为0的普通文件,并列出它们的完整路径;
$ find / -type f -size 0 -exec ls -l { } \;
4、查找/var/logs目录中更改时间在7日以前的普通文件,
并在删除之前询问它们;
$ find /var/logs -type f -mtime +7 -ok rm { } \;
5、为了查找系统中所有属于root组的文件;
$find . -group root -exec ls -l { } \;
-rw-r--r-- 1 root root 595 10月 31 01:09 ./fie1
6、find命令将删除当目录中访问时间在7日以来、
含有数字后缀的admin.log文件。
该命令只检查三位数字,所以相应文件的后缀不要超过999。
先建几个admin.log*的文件 ,才能使用下面这个命令
$ find . -name "admin.log[0-9][0-9][0-9]" -atime -7 -ok rm { } \;
< rm ... ./admin.log001 > ? n
< rm ... ./admin.log002 > ? n
< rm ... ./admin.log042 > ? n
< rm ... ./admin.log942 > ? n
7、为了查找当前文件系统中的所有目录并排序;
$ find . -type d | sort
8、为了查找系统中所有的rmt磁带设备;
$ find /dev/rmt -print
5> grep 按内容查找文件(只限文本文件)
grep lmcbbat /etc/passwd
输入内容,回车,查找文件
grep -R -l lmcbbat /etc
按内容查找文件并列出目录