-
find
find命令可以用于查找文件目录,同时还支持在查找之后执行命令,该命令的原理是在硬盘当中进行查找所以相对的速度会比较慢但是准确性比较好
参数
name:按文件名或目录名进行查找
user:按文件或目录所属用户进行查找
perm:按文件或目录的权限进行查找
d:指定查找的深度
size:指定查找文件或目录的大小
type:指定查找的类型
d:目录
f:文件
exec:用于查找之后执行命令
演示
find / -name shell.exe
表示查找根下名称为shell.exe的文件或目录
┌──(root💀kali)-[~]
└─
/root/shell.exe
find / -name kali-njh -type d
查找根下名为kali-njh的目录
┌──(root💀kali)-[~]
└─
/media/kali-njh
/var/lib/lightdm/data/kali-njh
/home/kali-njh
find / -perm 4755 -type f
查看根下权限为4755的文件
┌──(root💀kali)-[~]
└─
/usr/lib/mysql/plugin/auth_pam_tool_dir/auth_pam_tool
/usr/lib/openssh/ssh-keysign
/usr/libexec/polkit-agent-helper-1
/usr/bin/mount
/usr/bin/chsh
/usr/bin/ntfs-3g
/usr/bin/umount
/usr/bin/passwd
/usr/bin/newgrp
/usr/bin/chfn
/usr/bin/pkexec
/usr/bin/su
/usr/bin/fusermount3
/usr/bin/sudo
/usr/bin/gpasswd
/usr/bin/vmware-user-suid-wrapper
/usr/sbin/mount.nfs
/usr/sbin/mount.cifs
find: ‘/proc/7725/task/7725/fdinfo/5’: 没有那个文件或目录
find: ‘/proc/7725/fdinfo/6’: 没有那个文件或目录
find / -name shel.exe -type f -exec rm -f {} \
查找根下名为shell.exe的文件然后将其删除大括号表示的是前面查询出来的内容,\表示结束,可以看到shell.exe已经被删除了
┌──(root💀kali)-[~]
└─
公共 视频 文档 音乐 ip_forward~ ip.txt p6.dic shell1.exe shy.exe
模板 图片 下载 桌面 ip_forwarz~ nmap_sn rockyou.txt shell.exe u6.dic
┌──(root💀kali)-[~]
└─
┌──(root💀kali)-[~]
└─
公共 视频 文档 音乐 ip_forward~ ip.txt p6.dic shell1.exe u6.dic
模板 图片 下载 桌面 ip_forwarz~ nmap_sn rockyou.txt shy.exe
-
locate
作用和find差不多只不过该参数是在 /var/lib/mlocate/mlocate.db
这个数据库当中去进行查找,这里面存储的是最近的文件和目录信息,比起在硬盘进行查找的话速度上面会快很多。但是准确性也会下降因为这个数据库是默认一天更新一次,也就是说如果我们在前一刻创建或删除了一个文件的话,使用这个命令查询的信息就会不太准确,但是也可以使用命令 updatedb
对该数据库进行更新
参数
-l:限制输出的条目数
-i:忽略大小写
-e:会去检测文件或目录是否存在,不使用该参数的话直接在数据库中查找不对结果进行验证是否存在
-S:查看数据库中的文件和目录的情况更占多少
-c:只打印找到的条目数
-d:指定一个数据库而不是使用默认的数据库
演示
locate -S
只打印数据库的情况,输出数据库文件和目录所占的大小
┌──(root💀kali)-[~]
└─
数据库 /var/lib/mlocate/mlocate.db:
31,062 文件夹
360,289 文件
23,005,292 文件名中的字节数
8,740,636 字节用于存储数据库
locate -e shell.exe
去检测查询结果是否真实存在,因为数据库的更新有一定的滞后性可能文件已经删除此时会去访问文件查看文件是否真实存在,如下对比使用了和没有使用该参数的差异shell.exe文件实际是已经被删除了但是数据库还未更新,导致结果存在偏差此时就会去判断文件是否真的存在
┌──(root💀kali)-[~]
└─
/root/shell.exe
┌──(root💀kali)-[~]
└─
locate -c 2 ip.txt
只输出查找的结果的条目数
┌──(root💀kali)-[~]
└─
4
-
whereis
查看命令的man手册、二进制文件、源代码所在位置,在查找命令的时候是在PATH环境变量中进行查找的
参数
-b:只查找二进制文件。
-m:只查找说明文件。
-s:只查找原始代码文件。
演示
whereis -b ls
只查看ls命令的二进制文件所在位置
┌──(root💀kali)-[~]
└─
ls: /usr/bin/ls
whereis -s ls
查看原始文件所在的位置
┌──(root💀kali)-[~]
└─
vim:
whereis -m ls
查看ls命令的man手册所在位置
┌──(root💀kali)-[~]
└─
ls: /usr/share/man/man1/ls.1.gz
-
which
查看命令的二进制文件所在的位置也就是可执行文件所在的位置,该命令是在PATH路径中进行查找的
演示
which ls
查看ls的可执行文件所在位置
┌──(root💀kali)-[~]
└─
/usr/bin/ls