1.命令区别命令功能说明备注which常用于查找可直接执行的命令。只能查找可执行文件。该命令基本只在$PATH路径中搜索,查找范围最小,查找速度快。默认只返回第一个匹配的文件路径,通过选项 -a 可以返回所有匹配结果。命令文件locate超快速查找任意文件。它会从linux内置的索引数据库查找文件的路径,索引速度超快。新建的文件可能需要一定时间才能加入该索引数据库,可用updatedb命令来强制更新索引该命令通常会返回大量匹配项,可以使用 -r 选项通过正则表达式来精确匹配。任意文件find直接搜索整个文件目录,默认直接从根目录开始搜索,功能最强大但速度超慢。除非你指定一个很小的搜索范围。通过 -name 选项指定要查找的文件名,支持通配符。任意文件whereis该指令只能用于查找二进制文件、源代码文件和man手册页。一般文件的定位需使用locate命令。二进制文件2.命令类文件的查找
命令文件一般用which来查找,它从$PATH中找,速度很快。
可以查看一下,$PATH环境变量的值:
[root@myopenvas/]#echo$PATH/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
也就是which从下列路径中查找命令文件:
/usr/local/sbin/usr/local/bin/usr/sbin/usr/bin/root/bin
比如,我们查找ls和grep文件的位置:
[root@myopenvas/]#whichlsaliasls=’ls–color=auto’/usr/bin/ls[root@myopenvas/]#whichgrepaliasgrep=’grep–color=auto’/usr/bin/grep[root@myopenvas/]#3.任意文件的查找
可以用locate和find来查找。
3.1 locate查找文件
locate命令查找文件是通过LINUX文件数据库去查找,它对磁盘不进行扫描,因此查找速度比find快。但是新建的文件,由于没有马上同步到LINUX文件数据库里,这样,刚新建的文件通过locate可能查找不到,需要用updatedb手动执行同步,或者待LINUX系统自动执行任务后才可以找到。
更新的数据库文件位置在这里:
/var/lib/mlocate/mlocate.db
举例:
查找ifcfg-eth0文件:
[root@myopenvas/]#locateifcfg-eth0/etc/sysconfig/network-scripts/ifcfg-eth0[root@myopenvas/]#
然后在/home目录下新建一个mynewtest文件,进行查找:
[root@myopenvas/]#touch/home/mynewtest.txt[root@myopenvas/]#locatemynewtest.txt[root@myopenvas/]#
没有找到,再手动更新一下LINUX文件数据库:
[root@myopenvas/]#updatedb[root@myopenvas/]#
再进行查找:
[root@myopenvas/]#locatemynewtest.txt/home/mynewtest.txt[root@myopenvas/]#
已经找到。
3.2 find查找文件
用法:
find[-H][-L][-P][-Olevel][-Dhelp|tree|search|stat|rates|opt|exec][path…][expression]默认路径为当前目录;默认表达式为-print表达式可能由下列成份组成:操作符、选项、测试表达式以及动作
可以通过各种方式用find来查找文件,下面分别举例:
3.2.1按文件名查找[root@myopenvas/]#find/etc-nameifcfg-eth0/etc/sysconfig/network-scripts/ifcfg-eth0[root@myopenvas/]#find/etc-name”ifcfg-eth0″/etc/sysconfig/network-scripts/ifcfg-eth0[root@myopenvas/]#find/etc/-inameifcfg-eth0#-i忽略大小写/etc/sysconfig/network-scripts/ifcfg-eth0[root@myopenvas/]#find/etc/-inameifcfg-*#*使用通配符/etc/sysconfig/network-scripts/ifcfg-lo/etc/sysconfig/network-scripts/ifcfg-eth03.2.2按文件大小查找
查找/opt目录下,大于10M的文件:
[root@myopenvas/]#find/opt-size 10M/opt/social-engineer-toolkit-master.zip[root@myopenvas/]#
查找/opt目录下,小于2M的文件:
[root@myopenvas/]#find/opt-size-2M
查找/opt目录下,等于10M的文件:
[root@myopenvas/]#find/opt-size10M[root@myopenvas/]#
另外这里查找时,可以指定查找目录的深度:
-maxdepth levels
-mindepth levels
比如:
[root@myopenvas/]#find/-maxdepth4-nameifcfg-eth0#指定最大4层,3层的时候就找不到了/etc/sysconfig/network-scripts/ifcfg-eth0[root@myopenvas/]#3.2.3按时间查找按天atime、ctime、mtime按分钟amin、cmin、mmin
c-change:表示文件的属性被修改,包含所有者、所属组、权限。a-access:表示被访问、浏览过。m-modify:表示文件的内容被修改过。
也有下列属性:
-表示之内
表示超过
没有表示等于
比如:查找修改时间超过5天、等于5天、小于5天的文件:
[root@myopenvas/]#find/etc/-mtime 5[root@myopenvas/]#find/etc/-mtime5[root@myopenvas/]#find/etc/-mtime-5
再比如,查找修改时间超过2分钟、等于2分钟、小于2分钟的文件:
[root@myopenvas/]#find/etc/-mmin2[root@myopenvas/]#find/etc/-mmin2[root@myopenvas/]#find/etc/-mmin-23.2.4按文件属主、属组查找查找属主是moonrong的文件:[root@myopenvas/]#find/home-usermoonrong查找属组是redis的文件:[root@myopenvas/]#find/-groupredis查找属主是moonrong且属组是moonrong的文件:[root@myopenvasmoonrong]#find/home-usermoonrong-groupmoonrong查找属主是moonrong且属组是odoo的文件[root@myopenvas/]#find/home-usermoonrong-a-groupodoo
查找属主是moonrong或者属组是odoo的文件
[root@myopenvas/]#find/home-usermoonrong-o-groupodoo3.2.5按文件类型查找
一共7类:
符号文件类型含义f普通文件d目录l链接文件b块设备文件c字符设备s套接字p管道文件
比如:查找目录文件:
[root@myopenvas/]#find/dev-typed
查找块设备文件:
[root@myopenvas/]#find/dev-typeb/dev/dm-2/dev/dm-1/dev/dm-0/dev/vda2/dev/vda1/dev/vda[root@myopenvas/]#3.2.6按文件权限查找[root@myopenvasmoonrong]#find.-perm644#查找当前目录权限为644的文件
加ls可以直接显示找到的文件属性:
[root@myopenvasmoonrong]#find.-perm644-ls684-rw-r–r–1moonrongmoonrong184月12020./.bash_logout694-rw-r–r–1moonrongmoonrong1934月12020./.bash_profile704-rw-r–r–1moonrongmoonrong2314月12020./.bashrc
再比如,查找600权限的文件:
[root@myopenvasmoonrong]#find.-perm600-ls335544984-rw——-1moonrongmoonrong8711月62021./.cache/gdm/session.log764-rw——-1moonrongmoonrong1111月62021./.cache/abrt/lastnotification1006633864-rw——-1moonrongmoonrong811月62021./.cache/yelp/WebKitCache/Version\13/salt3.2.7按正则表达式查找[root@myopenvasmoonrong]#find/etc-regex’.*ifcfg-eth[0-9]’/etc/sysconfig/network-scripts/ifcfg-eth0[root@myopenvasmoonrong]#
这里:
.*:任意多个字符[0-9]:任意一个数字
3.3 find查找文件后执行的动作
比较常用的:-print、 -ls、 -cp等,其中print是默认格式。
如:在/etc目录下查找名字为ifcfg-eth*的文件,查到后删除:
[root@myopenvasmoonrong]#find/etc/-iname”ifcfg-eth*”-execrm-rf{}\;
这里{} \;是固定格式,{}表示find查找到的结果。
又如:在/etc/目录下查找名字这ifcfg-eth*的文件,查到后将其复制到/tmp目录下:
[root@myopenvasmoonrong]#find/etc/-iname”ifcfg-eth*”-execcp-rvf{}/tmp\;”/etc/sysconfig/network-scripts/ifcfg-eth0″->”/tmp/ifcfg-eth0″[root@myopenvasmoonrong]#4.二进制文件的查找
这类文件的查找,主要用whereis命令。
语法:
whereis[-bfmsu][-B<目录>…][-M<目录>…][-S<目录>…][文件…]
参数:
b查找二进制程序或命令-B从指定目录下 查找二进制程序或命令-m查找man手册文件-M从指定目录下 查找man手册文件-s只查找源代码文件-S从指定目录下 查找源代码文件
比如:显示ln命令的程序和man手册页的位置
bash:/usr/share/man/man1/bash.1.gz[root@myopenvas/]#whereislnln:/usr/bin/ln/usr/share/man/man1/ln.1.gz/usr/share/man/man1p/ln.1p.gz[root@myopenvas/]#
又如:显示scp命令的二进制程序的路径
[root@myopenvas/]#whereis-bscpscp:/usr/bin/scp[root@myopenvas/]#
学习|生活|分享|积累|永不停步
请留下你指尖的温度
让太阳拥抱你