文件搜索
Linux 系统中用于查找文件的命令有 find ,locate,whereis, which,type
1. find 命令
find是最常用也是最强大的查找命令,它可以查找任何类型的文件
find常用的选项:
-name:按文件名来查找文件
-user:按照文件的属主来查找文件
-group:按照文件所属的组来查找文件
-perm:按照文件权限来查找文件
-prune:不在当前指定目录中查找
-mtime -n +n n:按照文件修改时间来查找文件,-n表示文件修改时间距现在n天以内,+n表示文件修改时间据现在n天以前 , n 表示n 天之前的一天之内(在日常工作中我们经常会用到 find 结合 mtime 选项 和 rm -rf 命令 来清理log 文件)
-type:查找某一类型的文件(b:块设备文件;d:目录文件;c:字符设备文件;p:管道文件;l:链接文件;f:普通文件)
-nogroup:查找无有效所属组的文件,即文件所属的组在/etc/group中不存在
-nouser:查找无有效所属主的文件,即文件的所属主在/etc/passwd中不存在
举例:
find / -name file1 搜索根目录下面所有文件名为 file1 的 目录和文件
find /etc -name \*.d 搜索/etc目录下以'.d' 结尾的所有文件和目录
注意:\ 是转义符 , 也可使用单引号 find /etc -name ‘*.d’或双引号 find /etc -name “*.d”
find / -user yuki 搜索根目录下文件所有者是 'yuki' 的文件和目录
find / -group yuki 搜索根目录下文件所属组是 'yuki' 的文件和目录
find /tmp -perm 777 搜索/tmp目录下文件权限是777 (rwxrwxrwx)文件和目录
find /usr/bin -type f -mtime -10 搜索/usr/bin下 在10天内被创建或者修改过的文件
find /usr/bin -type f -mtime +10 搜索/usr/bin 下10天之前被创建或者修改过的文件
find /var/log -type f -mtime +60 -exec rm -rf {} \; 搜索在/var/log 下的 在60天之前被创建或者修改过的文件 , 并删除
find /root -name '*.sh' -exec chmod 755 {} \; 搜索/root下以 '.sh' 结尾的文件并定义其权限为755
2. locate 命令
locate命令实际是"find -name"的另一种写法,但是 locate命令要比find 查找快得多,原因在于它不搜索具体目录,而是搜索一个数据库/var/lib/mlocate/mlocate.db。所以在运行locate 之前要先运行updatedb命令,来确保查找的内容是最新的数据库的内容。
举例:locate '*.ps' 寻找以 '.ps' 结尾的文件.
3. whereis 命令
whereis命令是定位可执行文件、源代码文件、帮助文件在文件系统中的位置。
如果省略参数则返回所有的信息。
whereis 命令常用的选项:
-b : 只将二进制文件查找出来
-m : 查出说明(帮助)文档路径
-s :找到source源文件
举例:
whereis ls 查找ls相关的可执行文件、源代码文件和帮助文件的位置
whereis log 查找log相关的可执行文件、源代码文件和帮助文件的位置
whereis man 查找man相关的可执行文件、源代码文件和帮助文件的位置
whereis -b python 查找python相关的二进制文件的位置 (这个在工作当中还是很有帮助的)
whereis -m python 查找python的帮助文档的位置
4.which 命令
which指令会在环境变量$PATH设置的目录里查找符合条件的文件, 并显示其全路径。
简单来说which 是查找可执行文件的位置。
举例:
which ls 显示一个可执行文件 ls 的完整路径
5. type 命令
type命令其实不能算查找命令,它是用来区分某个命令到底是由shell自带的,还是由shell外部的独立二进制文件提供的。如果一个命令是外部命令,那么使用-p参数,会显示该命令的路径,相当于which命令。
举例:type -p systemctl 查找systemctl这个可执行文件的位置。相当于 which systemctl
查看文件内容、类型及属性
Linux系统中用于查看文件内容的命令有cat,more,less,head,tail;查看文件类型的命令是file; 查看文件属性的命令是stat
cat file1 从第一个字节开始正向查看文件的内容
tac file1 从最后一行开始反向查看一个文件的内容
more file1 分页显示大文本文件。最基本的指令就是按空白键(space)就往下一页显示,按 b 键就会往回(back)一页显示。
less file1 less工具也是对文件或其它输出进行分页显示的工具。less 的用法比起 more 更加的有弹性。在 more 的时候,我们并没有办法向前面翻, 只能往后面看,但若使用了 less 时,就可以使用 [pageup] [pagedown] 等按键的功能来往前往后翻看文件,更容易用来查看一个文件的内容!除此之外,在 less 里头可以拥有更多的搜索功能,不止可以向下搜,也可以向上搜。
举例: 在/var/log/message 文件里面搜索 Aug 关键字
head -2 file1 查看一个文件的前两行
tail -2 file1 查看一个文件的最后两行
tail -f /var/log/messages 实时查看被添加到这个文件 /var/log/message 中的内容
file /usr/bin/ls 查看/usr/bin/ls文件的类型
stat /usr/bin/ls 查看/usr/bin/ls文件的属性,例如大小,最后的修改时间等等